一、构造器实例化
构造器实例化是指Spring容器通过Bean对应类中默认的无参构造方法来实例化Bean.
通过一个简单的例子来训练。
1.在搭建好的项目中的src下创建一个con.spring.constructor包。在包下创建一个类 Bean1:
public class Bean1 {
}
2.在con.spring.constructor包下创建配置文件aplicationContext.xml.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
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="bean1" class="alern.spring.constructor.Bean1"></bean>
</beans>
3.创建测试类Test01
package alern.spring.constructor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test01 {
public static void main(String [] args){
String xmlPath = "alern/spring/constructor/aplicationContext.xml";
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext(xmlPath);
Bean1 bean1 = (Bean1) applicationContext.getBean("bean1");
System.out.println(bean1);
}
}
二、静态工厂方式实例化
1. 在alern.spring.staticfactory包中创建类Bean2.类中没有方法
2.在alern.spring.staticfactory包下创建类StaticFactory,并创建方法返回Bean2得的实例:
public class StaticFactory {
public static Bean2 createBean(){
return new Bean2();
}
}
3.在alern.spring.staticfactory包下创建Bean2.xml:
<bean id="bean2" class="alern.spring.staticfactory.StaticFactory"
factory-method="createBean"></bean>
factory-method属性告诉容器是哪个工厂方法。
4.创建测试类Test02:
package alern.spring.staticfactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import alern.spring.constructor.Bean1;
public class Test02 {
public static void main(String [] args){
String xmlPath = "alern/spring/staticfactory/bean2.xml";
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext(xmlPath);
Bean2 bean2 = (Bean2) applicationContext.getBean("bean2");
System.out.println(bean2);
}
}
三、使用实例工厂方式实例化
此种方式的工厂类中,不在使用静态方法创建Bean实例,而是直接采用创建Bean实例的方式。同时在配置文件中,也不是由class直接指向实例化类,而是通过factory-bean指向配置的实例工厂,factory-method确定工厂使用的是哪个方法。
1.在alern.spring.instancefactory包下创建类Bean3,也没有方法。
2.在alern.spring.instancefactory包下创建类Bean3facotury:
package alern.spring.instancefactory;
public class Bean3facotury {
public Bean3 myfactory(){
return new Bean3();
}
}
3.在alern.spring.instancefactory包下创建bean3,xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
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="factory" class="alern.spring.instancefactory.Bean3facotury"></bean>
<!-- 使用 factory-bean属性指向配置的实例工厂-->
<!-- 使用factory-method属性来确定使用工厂的哪个方法 -->
<bean id="bean3" factory-bean="factory" factory-method="myfactory"></bean>
</beans>
4.创建测试类Test3:
package alern.spring.instancefactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test03 {
public static void main(String [] args){
String xmlPath = "alern/spring/instancefactory/bean3.xml";
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext(xmlPath);
Bean3 bean3 = (Bean3) applicationContext.getBean("bean3");
System.out.println(bean3);
}
}
学习书籍:《javaEE企业级开发教程》
网友评论