如何将Spring6工厂设计模式与Bean实例化方式结合为一个?

摘要:bean的作用域 ioc容器默认bean是单例的(singleton)。 bean对象的创建是在初始化上下文的时候就创建了,每一次调用getBean()时,都返回那个单例对象。这行代码会创建配置里面的bean对象 Applicati
bean的作用域 ioc容器默认bean是单例的(singleton)。 bean对象的创建是在初始化上下文的时候就创建了,每一次调用getBean()时,都返回那个单例对象。 // 这行代码会创建配置里面的bean对象 ApplicationContext context = new FileSystemXmlApplicationContext("D:/applicationContext.xml"); 那如何把bean设置成多例的? <!-- scope="prototype" 会使这个bean变成多例的--> <bean id="sb" class="com.ali.bean.SpringBean" scope="prototype"/> // 由于这个bean是多例模式,这行代码不会创建bean对象。而是在调用getBean()时创建对象 ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml","spring-dao.xml"); // 这行代码才会创建bean对象 Object user= context.getBean("sb"); <!-- scope="prototype" 会使这个bean变成多例的 目前scope有2个值:singleton 和 prototype 当项目引入spring-webmvc依赖变成web项目时,scope会多2个属性 request:表示每次http请求都会创建一个新的bean对象 session: 表示每次 session都会创建一个新的bean对象 --> <bean id="sb" class="com.ali.bean.SpringBean" scope="prototype"/> 自定义scope 自定义Scope(实现Scope接口) spring内置了线程范围类: org.springframework.context.support.SimpleThreadScope 添加配置信息 <bean id="sb" class="com.ali.bean.SpringBean" scope="threadScope"/> <!-- 配置自定义的作用域,实现一个线程一个bean--> <bean class="org.springframework.beans.factory.config.CustomScopeConfigurer" > <property name="scopes"> <map> <entry key="threadScope"> <!-- 这个SimpleThreadScope 是spring框架内置的,也可以自定义--> <bean class="org.springframework.context.support.SimpleThreadScope"></bean> </entry> </map> </property> </bean> GoF之工厂模式 工厂模式的三种形态 简单工厂模式(Simple Factory):又叫静态工厂方法模式。是工厂方法模式的一种特殊实现。 工厂方法模式 (Factory Method) 抽象工厂模式 (Abstract Factory) 简单工厂模式 简单工厂模式包括三个角色:抽象产品、具体产品、工厂类。
阅读全文