1、静态工厂DependencyInjectByStaticFactory类:
package com.spring.factory; import com.spring.service.HelloApi; import com.spring.service.impl.HelloApiImpl1; //静态工厂类 public class DependencyInjectByStaticFactory { public static HelloApi newInstance(String message,int index){ return new HelloApiImpl1(message,index); } }
2、静态工厂Bean spring-staticFactoryDependencyInject.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="byIndex" class="com.spring.factory.DependencyInjectByStaticFactory" factory-method="newInstance"> <constructor-arg index="0" value="Hello World!"/> <constructor-arg index="1" value="1"/> </bean> <bean id="byType" class="com.spring.factory.DependencyInjectByStaticFactory" factory-method="newInstance"> <constructor-arg type="java.lang.String" value="Hello World!"/> <constructor-arg type="int" value="2"/> </bean> <bean id="byName" class="com.spring.factory.DependencyInjectByStaticFactory" factory-method="newInstance"> <constructor-arg name="message" value="Hello World!"/> <constructor-arg name="index" value="3"/> </bean> </beans>
3、创建测试DependencyInjectByStaticFactoryTest类:
package com.spring.test; import org.junit.Test; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.spring.service.HelloApi; public class DependencyInjectByStaticFactoryTest { @Test public void DIByStaticFactory(){ BeanFactory beanFactory=new ClassPathXmlApplicationContext("spring-staticFactoryDependencyInject.xml"); //获取根据参数索引依赖注入的Bean HelloApi byIndex=beanFactory.getBean("byIndex", HelloApi.class); byIndex.sayHello(); //获取根据参数类型注入的Bean HelloApi byType=beanFactory.getBean("byType", HelloApi.class); byType.sayHello(); //获取根据参数名字依赖注入的Bean HelloApi byName=beanFactory.getBean("byName", HelloApi.class); byName.sayHello(); } }
4、输出结果:
1: Hello World!
2: Hello World!
3: Hello World!
创建实例工类:
package com.spring.factory; import com.spring.service.HelloApi; import com.spring.service.impl.HelloApiImpl1; //实例工厂类 public class DependencyInjectByInstanceFactory { public HelloApi newInstance(String message,int index){ return new HelloApiImpl1(message,index); } }
创建Bean配置文件spring-instanceFactoryDependencyInject.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="instanceFactory" class="com.spring.factory.DependencyInjectByInstanceFactory"/> <bean id="byIndex" factory-bean="instanceFactory" factory-method="newInstance"> <constructor-arg index="0" value="Hello World!"/> <constructor-arg index="1" value="1"/> </bean> <bean id="byType" factory-bean="instanceFactory" factory-method="newInstance"> <constructor-arg type="java.lang.String" value="Hello World!"/> <constructor-arg type="int" value="2"/> </bean> <bean id="byName" factory-bean="instanceFactory" factory-method="newInstance"> <constructor-arg name="message" value="Hello World!"/> <constructor-arg name="index" value="3"/> </bean> </beans>
创建测试DependencyInjectByInstanceFactoryTest类:
package com.spring.test; import org.junit.Test; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.spring.service.HelloApi; public class DependencyInjectByInstanceFactoryTest { @Test public void DIByInstance(){ BeanFactory beanFactory=new ClassPathXmlApplicationContext("spring-instanceFactoryDependencyInject.xml"); //获取根据参数索引依赖注入的Bean HelloApi byIndex=beanFactory.getBean("byIndex", HelloApi.class); byIndex.sayHello(); //获取根据参数类型注入的Bean HelloApi byType=beanFactory.getBean("byType", HelloApi.class); byType.sayHello(); //获取根据参数名字依赖注入的Bean HelloApi byName=beanFactory.getBean("byName", HelloApi.class); byName.sayHello(); } }
输出结果:
1: Hello World!
2: Hello World!
3: Hello World!
相关推荐
调用实例工厂方法创建bean,与调用静态工厂方法创建bean 的用法基本相似。 区别如下: ·调用实例工厂方法创建bean 时,必须将实例工厂配置成bean 实例。 而静态工厂方法则无须配置工厂bean。 ·调用实例工厂方法...
spring-2 演示了外部配置文件的引入(connection),spel(spring el)表达式 ,静态工厂方式及实例工厂方式及factorybean方式创建bean, spring的生命周期及BeanPostProcessor的使用,注解方式创建bean 及使用...
1.2 掌握Spring的Ioc注入方式:传值注入和构造注入 1.3 掌握Spring的静态工厂注入方式 1.4 掌握Spring的实例工厂注入方式 2.2 根
3.3.2使用静态工厂方法实例化(简单工厂模式) 14 3.3.3初始化(创建)bean时机 15 Lazy-init初始化bean的时机拓展: 15 3.4 Bean的作用域 16 Scope单例多例作用域拓展: 16 3.4.1 singleton(默认值) 16 3.4.2 prototype...
简单介绍Ssm框架中spring中的控制反转,即IOC。里面包含静态工厂,实例工厂加载方法,还有bean的创建和对bean的操作,加入注解等操作,还自己配置了一个Date和String时间转化器
静态工厂 3.实例工厂 管理对象 对象关系DI 构造器注入 set注入 生命周期 scope:prototype/singleton init-method destroy-method API BeanFactory:使用这个工厂创建对象的方式都是懒加载,在...
3、Spring容器内部对象的创建:可以使用类构造器实例化、静态工厂方法实例化等方式来创建对象。 4、初始化bean时机:Spring默认在启动时将所有singleton bean提前进行实例化。 Spring的使用可以简化企业开发,...
4.3.2.2 使用静态工厂方法来实例化.. 36 4.3.2.3 使用实例工厂方法来实例化.. 37 4.4 依赖 38 4.4.1 依赖注入. 38 4.4.1.1 基于构造方法的依赖注入 39 4.4.1.2 基于setter 方法的依赖注入...
通过静态工厂方法创建对象 4.2.3.3.通过实例工厂方法创建对象 4.2.4.泛型类的对象创建 4.2.4.1.通过构造器创建泛型类的对象 4.2.4.2.通过静态工厂方法创建泛型类的对象 4.2.4.3.通过实例工厂方法创建泛型类的对象...
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...
4.3.3 工厂方法注入 4.3.4 选择注入方式的考量 4.4 注入参数详解 4.4.1 字面值 4.4.2 引用其他Bean 4.4.3 内部Bean 4.4.4 null值 4.4.5 级联属性 4.4.6 集合类型属性 4.4.7 简化配置方式 4.4.8 自动装配 4.5 方法...
2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决方案 57 2.1.3 工作原理 57 2.2 调用一个实例工厂方法创建Bean 58 2.2.1 问题 58 2.2.2 解决方案 59 2.2.3 工作原理 59 2.3 从静态字段...
包含spring的和Junit的jar包,采用Junit测试,一共四个案例,主要讲述:1.怎么利用IOC容器获得实例化对象;2.IOC容器到底是如何...3.静态工厂方式实例化Bean;4.依赖和依赖注入的几种方式。以及一张应用>>的ppt。
2.1 调用静态工厂方法创建Bean 57 2.1.1 问题 57 2.1.2 解决方案 57 2.1.3 工作原理 57 2.2 调用一个实例工厂方法创建Bean 58 2.2.1 问题 58 2.2.2 解决方案 59 2.2.3 工作原理 59 2.3 从静态字段...
4.3.3 工厂方法注入 4.3.4 选择注入方式的考量 4.4 注入参数详解 4.4.1 字面值 4.4.2 引用其他Bean 4.4.3 内部Bean 4.4.4 null值 4.4.5 级联属性 4.4.6 集合类型属性 4.4.7 简化配置方式 4.4.8 自动装配 4.5 方法...
spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。 设置注入的优点:直观,自然 构造注入的优点:可以在构造器中决定依赖关系的顺序。 什么是AOP? 面向切面编程(AOP)完善spring的...
1.1 依赖注入和控制反转 ............................................................................................................................7 1.2 模块..............................................
掌握系统框架设计原理,工厂模式,委托模式的实现,Spring的IOC依赖注入技术,Struts2,Hibernate与Spring的整合,ApplicationContext读取资源文件的3种方法,多个配置文件的加载与导入,静态代理与动态代理,...
利用了工厂模式将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都...
.......................................................................................................12 静态工厂实例化:..................................................................................