spring创建bean有三种方式:默认构造函数,静态方法和实例方法,下面就来看下
首先先创建一个Stu接口以及它的实现类StuImpl
package Test1;
public interface Stu {
public void get();
}
public class StuImpl implements Stu {
public void get(){
System.out.println(123);
}
}
然后就可以在bean.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">
<beans>
<bean id="Stu" class="Test1.StuImpl"></bean>
</beans>
</beans>
然后就可以测试
public class Test {
public static void main(String[]args){
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
Stu c= (Stu) context.getBean("Stu");
c.get();
context.close();
}
}
接下来是实例方法,先创建一个工厂类
public class Factory {
public Stu back(){
return new StuImpl();
}
}
然后是在bean.xml文件中配置
<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">
<beans>
<bean id="stu" class="Test1.Factory"></bean>
<bean factory-bean="stu" factory-method="back" id="Factory"></bean>
</beans>
</beans>
然后就可以测试
public class Test {
public static void main(String[]args){
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
Stu c= (Stu) context.getBean("Factory");
c.get();
context.close();
}
}
最后是静态方法,就是将工厂方法改为静态方法
public class Factory {
public static Stu back(){
return new StuImpl();
}
}
然后修改下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">
<beans>
<bean id="Factory" class="Test1.Factory" factory-method="back"></bean>
</beans>
</beans>
然后测试可以得到一样的结果。三种方式没什么太大不同,就是创建对象方式不一样