第一种 使用类的无参构造
<bean id="user" class="com.qianchen.bean.User"></bean>
如果类中没有无参构造会出现异常 nosuchmethod
public class Testioc {
@Test
public void testUser(){
//加载spring配置文件 创建对象
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
//得到配置文件中的对象
User user = (User) context.getBean("user");
user.add();
System.out.println(user);
}
}
第二种 静态工厂
创建静态方法,返回类的对象
<!-- 使用静态工厂创建对象 -->
<bean id="user2" class="com.qianchen.bean.BeanFactory" factory-method="getUser"></bean>
public class BeanFactory {
//静态方法 返回user
public static User getUser(){
return new User();
}
}
public class Testioc {
@Test
public void testUser(){
//加载spring配置文件 创建对象
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
//得到配置文件中的对象
User user = (User) context.getBean("user2");
user.add();
System.out.println(user);
}
}
第三种 实例工厂
创建不是静态的方法,返回类的对象
<!-- 实例工厂创建对象 -->
<!-- 非静态方法不能直接调用,首先创建工厂类对应的对象 -->
<bean id="beanFactory" class="com.qianchen.bean.BeanFactory"></bean>
<bean id="user3" factory-bean="beanFactory" factory-method="getUser"></bean>
public class Testioc {
@Test
public void testUser(){
//加载spring配置文件 创建对象
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
//得到配置文件中的对象
User user = (User) context.getBean("user3");
user.add();
System.out.println(user);
}
}
备注:开发中主要用第一种方式。