Bean实例化的三种方式
1. 无参构造方法实例化。
- 一般都是使用这种方法。
1.1 测试代码
public class User
{
}
public class Main
{
@Test
public void test()
{
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User) factory.getBean("user");
System.out.println(user);
}
}
1.2 Spring配置文件
<?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="user" class="User"></bean>
</beans>
1.3 结果
User@37d31475
2. 工厂静态方法实例化。
- 注意: 必须是static的方法才行。
2.1 测试代码
public class StaticMethodFactory
{
public User createUser()
{
return new User();
}
}
public class Main
{
@Test
public void test()
{
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User) factory.getBean("user2");
System.out.println(user);
}
}
2.2 Spring配置文件
在applicationContext.xml中添加。
<!-- 添加一个factory-method属性,指定工厂静态方法 -->
<bean id="user2" class="StaticMethodFactory" factory-method="createUser"></bean>
2.3 测试结果
User@60285225
3. 工厂实例方法实例化。
3.1 测试代码
public class InstanceMethodFactory
{
public User createUser()
{
return new User();
}
}
public class Main
{
@Test
public void test()
{
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User) factory.getBean("user3");
System.out.println(user);
}
}
3.2 Spring配置文件
<!-- 先创建一个工厂bean,然后创建实例化对象bean,并配置factory-bean和factory-method -->
<bean id="factory" class="InstanceMethodFactory"></bean>
<bean id="user3" factory-bean="factory" factory-method="createUser"></bean>
3.3 测试结果
User@29b5cd00