Spring基础:Bean的实例化
Posted nuist__NJUPT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring基础:Bean的实例化相关的知识,希望对你有一定的参考价值。
Spring基础:Bean的实例化
Spring可以看作一个大型工厂,用于生产和管理Spring容器中的Bean,如果要使用找个工厂生产和管理Bean,需要开发者将Bean配置到Spring的配置文件中。
在面向对象编程中,如果要使用某个对象,需要实例化该对象。在Spring框架中,若想使用Spring容器中的Bean,也需要实例化Bean。Spring框架实例化Bean有三种方法:1-构造方法实例化,2-静态工厂实例化,3-动态工厂实例化。其中,最常用的就是构造方法实例化。
构造方法实例化
1-在Eclipse中创建一个名为ch13的Web应用,并导入Spring支持和以来的JAR包。
2-在src目录下创建instance包,并在该包中创建BeanClass类
public class BeanClass {
public String message ;
public BeanClass() {
message = "构造方法实例化Bean" ;
}
public BeanClass(String message) {
this.message = message ;
}
}
3-在创建配置文件applicationContext.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">
<!-- 构造方法实例化Bean -->
<bean id = "constuctorInstance" class = "instance.BeanClass" />
</beans>
4-在src目录下创建test包,并在该包中创建测试类TestInstance.
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import instance.BeanClass;
/**
* Spring容器可以调用Bean对应类中的无参数的构造方法来实例化Bean
* @author nuist__NJUPT
*
*/
public class TestInstance {
public static void main(String[] args) {
//初始化Spring容器,加载配置文件
ApplicationContext appCon = new ClassPathXmlApplicationContext("applicationContext.xml") ;
//构造方法实例化Bean
BeanClass b1 = (BeanClass) appCon.getBean("constuctorInstance") ;
System.out.println(b1 + " " + b1.message) ;
}
}
5-测试结果如下
静态工厂实例化
静态工厂实例化需要在工厂类中使用静态方法来创建Bean的实例,在配置Bean时候,class属性指定静态工厂类,还需要使用factory-method属性指定工厂类中的静态方法
1-在instance包中创建工厂类BeanStaticFactory,g该类中使用一个静态方法来实例化对象
public class BeanStaticFactory {
private static BeanClass beanInstance = new BeanClass("调用静态工厂方法") ;
public static BeanClass createInstance() {
return beanInstance ;
}
}
2-在applicationContext.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">
<!-- 构造方法实例化Bean -->
<bean id = "constuctorInstance" class = "instance.BeanClass" />
<bean id = "staticFactoryInstance" class = "instance.BeanStaticFactory" factory-method = "createInstance"/>
</beans>
3-在测试类TestInstance中添加测试代码
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import instance.BeanClass;
/**
* Spring容器可以调用Bean对应类中的无参数的构造方法来实例化Bean
* @author nuist__NJUPT
*
*/
public class TestInstance {
public static void main(String[] args) {
//初始化Spring容器,加载配置文件
ApplicationContext appCon = new ClassPathXmlApplicationContext("applicationContext.xml") ;
//构造方法实例化Bean
BeanClass b1 = (BeanClass) appCon.getBean("constuctorInstance") ;
System.out.println(b1 + " " + b1.message) ;
//静态工厂方法实例化Bean
BeanClass b2 = (BeanClass) appCon.getBean("staticFactoryInstance") ;
System.out.println(b2 + " " + b2.message) ;
}
}
4-测试结果如下
实例工厂实例化
使用实例工厂实例化需要在工厂类中创建一个实例方法来创建Bean的实例,在配置Bean时候,使用factory-bean指定实例工厂,使用factory-method指定实例方法
1-在Instance包中创建工厂类BeanInstanceFatory
public class BeanInstanceFactory {
public BeanClass createBeanClassInsatnce() {
return new BeanClass("调用实例工厂方法实例化Bean") ;
}
}
2-在applicationContext.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">
<!-- 构造方法实例化Bean -->
<bean id = "constuctorInstance" class = "instance.BeanClass" />
<bean id = "staticFactoryInstance" class = "instance.BeanStaticFactory" factory-method = "createInstance"/>
<bean id = "myFactory" class = "instance.BeanInstanceFactory"/>
<bean id = "instanceFactoryInstance" factory-bean = "myFactory" factory-method = "createBeanClassInsatnce"/>
</beans>
3-在测试类TestInstance中编写测试代码
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import instance.BeanClass;
/**
* Spring容器可以调用Bean对应类中的无参数的构造方法来实例化Bean
* @author nuist__NJUPT
*
*/
public class TestInstance {
public static void main(String[] args) {
//初始化Spring容器,加载配置文件
ApplicationContext appCon = new ClassPathXmlApplicationContext("applicationContext.xml") ;
//构造方法实例化Bean
BeanClass b1 = (BeanClass) appCon.getBean("constuctorInstance") ;
System.out.println(b1 + " " + b1.message) ;
//静态工厂方法实例化Bean
BeanClass b2 = (BeanClass) appCon.getBean("staticFactoryInstance") ;
System.out.println(b2 + " " + b2.message) ;
//实力工厂方法实例化
BeanClass b3 = (BeanClass) appCon.getBean("instanceFactoryInstance") ;
System.out.println(b3 + " " + b3.message) ;
}
}
4-测试结果如下
以上是关于Spring基础:Bean的实例化的主要内容,如果未能解决你的问题,请参考以下文章