首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏测试开发干货

    数据工厂平台11:首页收尾

    我在这里给大家继续更新下数据工厂章节。 接着来做这个首页的收尾部分。按照上节课的结尾,我们需要进行新导入组件的三个本地化配置。 1. 调整大小位置样式等 2.

    1K20编辑于 2022-05-19
  • 来自专栏JuneBao

    【设计模式 11】抽象工厂模式

    抽象工厂工厂方法中的所用工厂向上抽象出一个抽象工厂,将所有产品向上抽象出抽象产品,这样抽象工厂模式中的角色就包括: AbstractFactory:抽象工厂 ConcreteFactory:具体工厂 AbstractProduct:抽象产品 Product:具体产品 简单工厂工厂方法,抽象工厂 对比三种工厂模式,简单工厂直接在一个静态工厂中返回产品实例,没有对产品或工厂做任何抽象,是最简单粗暴的工厂模式 ,但每次添加新的产品都要修改工厂类,违反开闭原则,后来工厂方法将工厂类向上抽象出一个“抽象工厂接口”,让每一个具体的工厂类只返回一种产品,这样添加新产品时只需要给“抽象工厂接口”添加新的实现类即可,但工厂方法的问题在于每个具体工厂只能生产一种产品 当抽象工厂模式中每一个具体工厂类只创建一个产品对象,也就是只存在一个产品等级结构时,抽象工厂模式退化成工厂方法模式;当工厂方法模式中抽象工厂与具体工厂合并,提供一个统一的工厂来创建产品对象,并将创建对象的工厂方法设计为静态方法时 实现具体工厂 反射改进抽象工厂 如果抽象工厂中加入了新的产品,那首先必须改变抽象工厂接口,其次所有的具体工厂类也要跟着修改,为此可以选择放弃工厂方法的思想,改用简单工厂的思想。

    47530编辑于 2022-10-26
  • 来自专栏圣杰的专栏

    DDD理论学习系列(11)-- 工厂

    这个时候,我们就可以引入创建类模式——工厂模式来帮忙,将对象的使用与创建分开,将对象的创建逻辑明确地封装到工厂对象中去。 2. DDD中的工厂 我们有必要先理清工厂工厂模式。 而针对工厂模式的实现主要有四种方式: 简单工厂:简单实用,但违反开放封闭; 工厂方法:开放封闭,单一产品; 抽象工厂:开放封闭,多个产品; 反射工厂:可以最大限度的解耦。 5.聚合中的工厂方法 提到工厂,并不是都需要需要创建独立的工厂类来负责对象的创建。一个工厂方法也可以存在于一个聚合中。 比如这样一项需求,顾客可以将购物车中的商品移到愿望清单中去。 通过使用工厂可以有效的保证领域模型的干净整洁,以确保领域模型的对现实的准确表达。使用工厂具有以下好处: 工厂将领域对象的使用和创建分离。 通过使用工厂类,可以隐藏创建复杂领域对象的业务逻辑。 工厂类可以根据调用者的需要,创建相应的领域对象。 工厂方法可以封装聚合的内部状态。 然而,并不是任何需要实例化对象的地方都要使用工厂

    2.2K100发布于 2018-01-11
  • 来自专栏漫漫架构路

    Spring源码学习笔记(4)——注解扫描

    TypeFilter定义如下: public interface TypeFilter { /** * 指定类是否匹配组件扫描的过滤规则 * @param metadataReader 目标类的元数据reader * @param metadataReaderFactory 可以获取其他类元数据reader的工厂 * @return 是否匹配过滤规则 * @throws IOException */ boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory 该方法有两个参数: metadataReader:当前扫描到的目标类的元数据读取器,可以通过该对象获取目标类的信息; metadataReaderFactory:其他类的元数据工厂了,可以获取其他类的信息 org.springframework.core.type.filter.TypeFilter; import java.io.IOException; /** * @Auther: ZhangShenao * @Date: 2018/9/21 11

    67620发布于 2020-09-03
  • 来自专栏温安适的blog

    Spring如何整合Mybatis,源码不难嘛!

    metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { String return isConditionMatch(metadataReader); } } return false; } 总结MapperScannerConfigurer的作用 的目录递归搜索接口,将它们注册为MapperFactoryBean SqlSessionFactoryBean 类注释 创建Mybatis的SqiSessionFactory,用于Spring上下文中进行共享 MapperFactoryBean是这一切的答案(MapperFactoryBean:注意看我的名字---Mapper的工厂!!) 注意这个工厂仅仅注入接口不注入实现类 类图找关键方法 [MapperFactoryBean] 看类图,又看到了InitializingBean和FactoryBean!!!

    89700发布于 2019-11-03
  • 来自专栏Java编程技术

    Spring&Mybaits数据库配置解惑

    -- (2) session工厂 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean -- (2) session<em>工厂</em> --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean //3.9 return this.sqlSessionFactoryBuilder.build(configuration); } 如上代码(3.1)创建了一个Spring事务管理<em>工厂</em> (3.5)解析mapper.xml中/mapper/resultMap标签下内容,然后存放到Configuration对象的resultMaps缓存里面,这里需要提一下,所有的mapper.xml文件<em>共享</em>一个 代码(5.13)设置session<em>工厂</em>到bean定义。

    76020发布于 2018-09-06
  • 来自专栏全栈程序员必看

    Webserver管理系列:11、注意默认的隐含共享

    安装完Windows Server 2008之后默认的c/d/e…磁盘是共享的。 我们能够通过取消”Microsoft网络的文件和打印机共享”服务来阻止别人訪问我们的共享文件: 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/118256.html

    46410编辑于 2022-07-13
  • 来自专栏huofo's blog

    Spring源码解析之BeanFactoryPostProcessor(二)

    /19 08:22 <DIR> . 2020/11/19 08:22 <DIR> .. 2020/11/19 08:22 /11/19 08:22 318 HelloService$Hello.class 2020/11/19 08:22 524 HelloService.class 2020/11/19 08:22 559 OrderService.class 2020/11/19 08:22 1,783 Test1BeanFactoryPostProcessor.class isCandidateComponent(MetadataReader metadataReader)在<2>和<3>会按照我们在@CommponScan设定的excludeFilters和includeFilters 之后将beanFactory传给<2>处和<3>处的方法,从方法注释可以看到,<2>处会调用bean工厂后置处理器,<3>处会用beanFactory来初始化剩余的非懒加载单例对象,即我们编写的dao、

    38730编辑于 2022-03-18
  • 来自专栏springboot

    Spring源码解析(二):bean容器的创建、注册默认后置处理器、bean定义扫描类

    一、Spring源码基础组件 阅读源码时候,接口与类过多,可以对照这里查看对应的关系 1、bean定义接口体系 2、bean工厂接口体系 3、ApplicationContext上下文体系 二、AnnotationConfigApplicationContext ); //关闭容器 context.close(); } } AnnotationConfigApplicationContext的构造方法: 1、创建bean工厂 beanDefs.add(registerPostProcessor(registry, def, EVENT_LISTENER_PROCESSOR_BEAN_NAME)); } // 3.6.注册事件监听工厂 EventListenerMethodProcessor 事件监听后置处理器 internalEventListenerFactory = DefaultEventListenerFactory 事件监听工厂 metadataReader) throws IOException { for (TypeFilter tf : this.excludeFilters) { if (tf.match(metadataReader

    73221编辑于 2025-01-21
  • 来自专栏Happy的分享

    【快学springboot】11.整合redis实现session共享

    这篇文章就教大家如何使用springboot整合redis来实现session共享。 这个配置项可以去掉,但是我留在这是是想告诉大家可以在这里配置redis密码 实现session共享 其实springboot实现session共享非常的方便,只需要一个@EnableRedisHttpSession 使用nginx测试 通过上面的例子,已经证明了session被redis存储了,下面,我们通过把应用启动在两个端口,使用nginx转发,测试session是否真的共享了。 通过postman多次调用,可以获得结果如下: 可以看到,port分别出现了8080和8081,并且都能够正常获取到之前设置的happyjava这个值,说明session共享已经配置成功了。 总结 springboot配置session共享是非常方便的,只需要EnableRedisHttpSession注解即可。

    41510编辑于 2024-02-02
  • 来自专栏Happy的分享

    【快学springboot】11.整合redis实现session共享

    这篇文章就教大家如何使用springboot整合redis来实现session共享。 这个配置项可以去掉,但是我留在这是是想告诉大家可以在这里配置redis密码 实现session共享 其实springboot实现session共享非常的方便,只需要一个@EnableRedisHttpSession 使用nginx测试 通过上面的例子,已经证明了session被redis存储了,下面,我们通过把应用启动在两个端口,使用nginx转发,测试session是否真的共享了。 多次调用,可以获得结果如下: image.png image.png 可以看到,port分别出现了8080和8081,并且都能够正常获取到之前设置的happyjava这个值,说明session共享已经配置成功了 总结 springboot配置session共享是非常方便的,只需要EnableRedisHttpSession注解即可。

    60630发布于 2019-07-16
  • 来自专栏海仔技术驿站

    最全的Spring注解详解

    classMetadata = metadataReader.getClassMetadata(); // 获取当前类资源(类的路径) Resource resource 返回需要导入的组件的全类名数组. 3) : ImportBeanDefinitionRegistrar : 手动注册Bean到容器中 4 : 使用Spring提供的FactoryBean(工厂 Bean) 1) : 默认获取到的是工厂bean调用getObject创建的对象 2) : 要获取工厂Bean本身,我们需要给id前面加一个& ColorFactoryBean getBean() { return new ColorFactoryBean(); } public void test() { //工厂 @PostConstruct public void init() { System.out.println("11

    90040发布于 2019-08-06
  • 来自专栏springboot

    SpringBoot源码解析(九):Bean定义接口体系

    Bean的名称,如果通过工厂Bean创建 @Nullable private String factoryBeanName; // 工厂方法的名称,用于通过静态方法或工厂Bean public ScannedGenericBeanDefinition(MetadataReader metadataReader) { // 校验 metadataReader 不为 null Assert.notNull(metadataReader, "MetadataReader must not be null"); // 从 MetadataReader 获取注解元数据 this.metadata = metadataReader.getAnnotationMetadata(); // 设置 Bean 类的名称 setBeanClassName(this.metadata.getClassName ()); // 设置扫描到的资源 setResource(metadataReader.getResource()); } @Override // 返回 Bean 类的注解元数据 public

    39010编辑于 2025-02-04
  • Win11共享打印0x0000bc4,三步解决共享难题

    在多人办公场景中,共享打印机能大幅提升效率,但Win11系统常因驱动、网络或权限问题出现错误,其中Win11共享打印0x0000bc4最为常见。 一、检查共享设置与网络配置 Win11共享打印0x0000bc4可先从基础设置错误,多数情况是网络或权限配置遗漏导致。 输入 \\192.168.1.100,回车后找到共享打印机图标,右键「连接」 二、修改组策略与服务配置 如果基础设置没问题,Win11共享打印0x0000bc4的原因可能是系统策略限制或服务异常,需要通过组策略编辑器调整 针对Win11共享打印0x0000bc4错误,可以重点检测三类问题: 驱动状态:扫描驱动是否过期、损坏或与Win11不兼容; 共享配置:检查文件和打印机共享功能是否启用; 服务状态:监测Print Spooler 四、总结与注意事项 解决Win11共享打印0x0000bc4的关键在于分层排查,需注意: 驱动匹配:老旧打印机优先选择Win10兼容驱动,避免最新版驱动与Win11冲突; 隐私安全:在线工具处理敏感文件时

    4.6K10编辑于 2025-09-28
  • 来自专栏C语言中文社区

    C++11 实现一个自动注册的工厂

    下面来看看如何用 C++11 来实现这个自动注册的对象工厂。 factory(factory&&) = delete; static std::map<std::string, std::function<Message*()>> map_; }; 在C++11 中单例的实现非常简单,返回一个一个静态局部变量的引用即可,而且这个方法还是线程安全的,因为C++11中静态局部变量的初始化是线程安全的。 这里用到了C++11的一个新特性:内部类可以通过外部类的实例访问外部类的私有成员,所以register_t可以直接访问factory的私有变量map_。 (); //Message1 auto p2 = factory::produce_unique("message1"); p2->foo(); } 总结: 使用C++11

    1.2K40编辑于 2022-05-31
  • 来自专栏BAT的乌托邦

    Spring元数据Metadata的使用,注解编程之AnnotationMetadata,ClassMetadata、MetadataReaderFactory【享学Spring】

    MetadataReaderFactory MetadataReader的实现都并未public暴露出来,所以我们若想得到它的实例,就只能通过此工厂。 IOException { return new SimpleMetadataReader(resource, this.resourceLoader.getClassLoader()); } } 此工厂生产的是 此类可认为从没有被Spring内部使用过,暂且可忽略(spring-data工程有用) Factory工厂的实现都是非常简单的,毕竟只是为了生产一个实例而已。 下面我也给出使用案例: 因为MetadataReader的实现类都是包级别的访问权限,所以它的实例只能来自工厂 public static void main(String[] args) throws metadataReader = readerFactory.getMetadataReader(MetaDemo.class.getName()); MetadataReader metadataReader

    2.4K42编辑于 2022-05-11
  • 来自专栏源码之路

    逐行阅读Spring5.X源码(六) ClassPathBeanDefinitionScanner扫描器

    Component,构造BeanDefinition对象(实际为ScannedGenericBeanDefinition) 利用BeanDefinitionRegister注册BeanDefinition到bean工厂中 ,BeanDefinitionRegister是spring默认bean工厂DefaultListableBeanFactory的一个接口,用于注册BeanDefinition; 先祭出类继承图: resourceLoader) { Assert.notNull(registry, "BeanDefinitionRegistry must not be null"); //bean工厂 *meteDataFactory根据Resouce获取到MetadataReader对象 *MetadataReader */ MetadataReader metadataReader = getMetadataReaderFactory().getMetadataReader

    87630发布于 2020-09-04
  • 来自专栏DDD

    spring温习-FactoryBean应用

    com.jack.remote.service")); List<String> classNames = Arrays.stream(resources).map(resource -> { MetadataReader metadataReader = null; try { metadataReader = metadataReaderFactory.getMetadataReader resource); } catch (IOException e) { e.printStackTrace(); } return metadataReader.getClassMetadata }); } 三、装配 对于远程service包下的类,就可以直接使用@Autowired来装配 总结 至此FactoryBean已经完结,对于它的作用已经了解:它是一个能生产或修饰对象生成的工厂 Bean,类似于设计模式中的工厂模式和装饰器模式

    87630发布于 2021-03-23
  • 来自专栏用户1337634的专栏

    ConditionalOnClass实现原理

    Users/tenmao/Workspace/boot/tenmao-cond/target/classes/com/tenmao/cond/UserManager.class"); //元数据解析器工厂 CachingMetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(); //元数据解析器 MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource); //解析出来的类元数据 ClassMetadata classMetadata = metadataReader.getClassMetadata(); System.out.println(classMetadata); } 注意:整个过程程序并没有使用

    1.4K30发布于 2021-06-17
  • 来自专栏后端开发笔记

    Spring之IOC底层原理

    TypeFilter 类型:接口 作用:自定义类型过滤器 范例: public class MyTypeFilter implements TypeFilter { public boolean match(MetadataReader mr, MetadataReaderFactory mrf) throws IOException { ClassMetadata cm = metadataReader.getClassMetadata ClassPathBeanDefinitionScanner(r, false); TypeFilter tf = new TypeFilter() { public boolean match(MetadataReader class SpringConfig { } 10.7.bean初始化过程解析 10.7.1.bean初始化过程解析 BeanFactoryPostProcessor 作用:定义了在bean工厂对象创建后 ,bean对象创建前执行的动作,用于对工厂进行创建后业务处理 运行时机:当前操作用于对工厂进行处理,仅运行一次 BeanPostProcessor 作用:定义了所有bean初始化前后进行的统一动作

    40910编辑于 2022-11-18
领券