Spring中基于XML实例化Bean的四种方式
程序员文章站
2022-05-24 17:48:47
...
Spring中基于XML实例化Bean的四种方式
1.无参数构造器(默认构造器) (最常用)
spring在创建bean的时候自动调用无参构造器来实例化,相当于new Bean1()
Bean1.java
public class Bean1 {
//默认无参构造
}
applicationContext.xml
<!-- 1.默认构造器实例化对象 -->
<bean id="bean1" class="com.alilaoye.demo02_instantiate_bean.way1.Bean1"/>
Bean1Test.java
public class Bean1Test {
@Test
public void test() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean1 bean1 = (Bean1)applicationContext.getBean("bean1");
System.out.println(bean1);
}
}
2.静态工厂方法
Bean2.java
public class Bean2 {
//默认无参构造
}
Bean2Factory.java
public class Bean2Factory {
public static Bean2 getBean2() {
//在做实例化的时候,可以做其他的事情,即可以在这里写初始化其他对象的代码
//...
return new Bean2();
}
}
applicationContext.xml
<!-- 1.默认构造器实例化对象 -->
<!-- 2.静态工厂获取实例化对象 -->
<!-- class:直接指定到静态工厂类, factory-method: 指定生产实例的方法, spring容器在实例化工厂类的时候会自动调用该方法并返回实例对象 -->
<bean id="bean2" class="com.alilaoye.demo02_instantiate_bean.way2.Bean2Factory" factory-method="getBean2"/>
Bean2Test.java
public class Bean2Test {
@Test
public void test() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean2 bean2 = (Bean2)applicationContext.getBean("bean2");
System.out.println(bean2);
}
}
3.实例工厂方法
Bean3.java
public class Bean3 {
//默认无参构造
}
Bean3Factory.java
public class Bean3Factory {
public Bean3 getBean3() {
return new Bean3();
}
}
applicationContext.xml
<!-- 3:实例工厂的方式实例化bean -->
<bean id="bean3Factory" class="com.alilaoye.demo02_instantiate_bean.way3.Bean3Factory"/>
<!-- factory-bean相当于ref:引用一个bean对象 -->
<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"/>
Bean3Test.java
public class Bean3Test {
@Test
public void test() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean3 bean3 = (Bean3)applicationContext.getBean("bean3");
System.out.println(bean3);
}
}
4.FactoryBean方式
Bean4.java
public class Bean4 {
//默认无参构造
}
Bean4Factory.java
spring在实例化对象的时候回判断是否该对象实现了FactoryBean接口,如果实现了就直接调用
public class Bean4Factory implements FactoryBean<Bean4> {
//产生对象
@Override
public Bean4 getObject() throws Exception {
return new Bean4();
}
@Override
public Class<?> getObjectType() {
return null;
}
}
applicationContext.xml
<!-- 4:FactoryBean-->
<!--spring在实例化对象的时候会判断是否该对象实现了FactoryBean接口,如果实现了就直接调用getObject()方法,并返回执行结果-->
<bean id="bean4" class="com.alilaoye.demo02_instantiate_bean.way4.Bean4Factory"/>
Bean3Test.java
public class Bean4Test {
@Test
public void test() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Bean4 bean4 = (Bean4)applicationContext.getBean("bean4");
System.out.println(bean4);
}
}
推荐阅读
-
02Spring基于xml的IOC配置--实例化Bean的三种方式
-
Spring中bean的初始化和销毁几种实现方式详解
-
Spring实例化Bean的五种方式
-
spring配置文件(spring的开发步骤;bean中的scope,init-method,destroy-method;bean的工厂静态方法实例化;工厂动态方法实例化)
-
spring三种实例化bean的方式
-
Spring学习--Bean实例化的三种方式
-
Spring实例化Bean的五种方式
-
Spring框架_实例化Bean的三种方式
-
Spring中Bean的基于xml的三种实例化方式
-
Spring1.1——基于xml的bean装配的三种实例化方式