传智播客spring学习,实例化bean的方式及Bean的作用域
2009-03-25 22:56
525 查看
今天继续学习Spring,黎老师对Spring研究比较透彻,讲课思路很清晰,认真听讲很容易理解。黎老师对Spring中比较重要的部分都进行了讲解,实例化Spring容器的方式,实例化bean的方式,Bean的作用域等。并进行了举例,通过对Spring和以前项目的学习,在项目中可以使用Sping,使项目功能的实现更简单,遵循MVC模式。
使用Spring需要的jar
可以到http://www.springsource.org/download下载spring,然后进行解压缩,在解压目录中找到下面jar文件,拷贝到类路径下
dist/spring.jar
lib/jakarta-commons/commons-logging.jar
如果使用了切面编程(AOP),还需要下列jar文件
lib/aspectj/aspectjweaver.jar和aspectjrt.jar
lib/cglib/cglib-nodep-2.1_3.jar
如果使用了JSR-250中的注解,如@Resource/@PostConstruct/@PreDestroy,还需要下列jar文件
lib/j2ee/common-annotations.jar
beans.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-2.5.xsd">
.....
</beans>
该配置模版可以从spring的参考手册或spring的例子中得到。配置文件的取名可以任意,文件可以存放在任何目录下,但考虑到通用性,一般放在类路径下。
实例化Spring容器常用的两种方式:
方法一:
在类路径下寻找配置文件来实例化容器
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});
方法二:
在文件系统路径下寻找配置文件来实例化容器
ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[]{“d://beans.xml“});
一般使用第一种方式,Spring的配置文件可以指定多个,可以通过String数组
传入。
当spring容器启动后,因为spring容器可以管理bean对象的创建,销毁等生命
周期,所以我们只需从容器直接获取Bean对象就行,而不用编写一句代码来创建
bean对象。从容器获取bean对象的代码如下:
ApplicationContext ctx = new ClassPathXmlApplicationContext(“beans.xml”);
OrderService service = (OrderService)ctx.getBean("personService");
三种实例化bean的方式:
1.使用类构造器实例化
<bean id=“orderService" class="cn.itcast.OrderServiceBean"/>
2.使用静态工厂方法实例化
<bean id="personService" class="cn.itcast.service.OrderFactory" factory-method="createOrder"/>
public class OrderFactory {
public static OrderServiceBean createOrder(){
return new OrderServiceBean();
}
}
3.使用实例工厂方法实例化:
<bean id="personServiceFactory" class="cn.itcast.service.OrderFactory"/>
<bean id="personService" factory-bean="personServiceFactory" factory-method="createOrder"/>
public class OrderFactory {
public OrderServiceBean createOrder(){
return new OrderServiceBean();
}
}
Bean的作用域
.singleton (单例)
在每个Spring IoC容器中一个bean定义只有一个对象实例。默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。如:
<bean id="xxx" class="cn.itcast.OrderServiceBean" lazy-init="true"/>
如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init=“true“,如下:
<beans default-lazy-init="true“ ...>
实际应用中不把这个属性设置为true.
.prototype (原型)
每次从容器获取bean都是新的对象。每次调用getBean方法,都获取新的实例。
调用调用getBean方法时 bean才实例化
.request
.session
.global session
在配置文件中指定Bean的初始化方法和销毁方法
<bean id="xxx" class="cn.itcast.OrderServiceBean" init-method="init" destroy-method="close"/>
Bean实例化后 ,就会执行init方法, Spring容器通过反射机制来调用。
AbstractApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
ctx.close();//正常关闭spring容器。
使用Spring需要的jar
可以到http://www.springsource.org/download下载spring,然后进行解压缩,在解压目录中找到下面jar文件,拷贝到类路径下
dist/spring.jar
lib/jakarta-commons/commons-logging.jar
如果使用了切面编程(AOP),还需要下列jar文件
lib/aspectj/aspectjweaver.jar和aspectjrt.jar
lib/cglib/cglib-nodep-2.1_3.jar
如果使用了JSR-250中的注解,如@Resource/@PostConstruct/@PreDestroy,还需要下列jar文件
lib/j2ee/common-annotations.jar
beans.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-2.5.xsd">
.....
</beans>
该配置模版可以从spring的参考手册或spring的例子中得到。配置文件的取名可以任意,文件可以存放在任何目录下,但考虑到通用性,一般放在类路径下。
实例化Spring容器常用的两种方式:
方法一:
在类路径下寻找配置文件来实例化容器
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});
方法二:
在文件系统路径下寻找配置文件来实例化容器
ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[]{“d://beans.xml“});
一般使用第一种方式,Spring的配置文件可以指定多个,可以通过String数组
传入。
当spring容器启动后,因为spring容器可以管理bean对象的创建,销毁等生命
周期,所以我们只需从容器直接获取Bean对象就行,而不用编写一句代码来创建
bean对象。从容器获取bean对象的代码如下:
ApplicationContext ctx = new ClassPathXmlApplicationContext(“beans.xml”);
OrderService service = (OrderService)ctx.getBean("personService");
三种实例化bean的方式:
1.使用类构造器实例化
<bean id=“orderService" class="cn.itcast.OrderServiceBean"/>
2.使用静态工厂方法实例化
<bean id="personService" class="cn.itcast.service.OrderFactory" factory-method="createOrder"/>
public class OrderFactory {
public static OrderServiceBean createOrder(){
return new OrderServiceBean();
}
}
3.使用实例工厂方法实例化:
<bean id="personServiceFactory" class="cn.itcast.service.OrderFactory"/>
<bean id="personService" factory-bean="personServiceFactory" factory-method="createOrder"/>
public class OrderFactory {
public OrderServiceBean createOrder(){
return new OrderServiceBean();
}
}
Bean的作用域
.singleton (单例)
在每个Spring IoC容器中一个bean定义只有一个对象实例。默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。如:
<bean id="xxx" class="cn.itcast.OrderServiceBean" lazy-init="true"/>
如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init=“true“,如下:
<beans default-lazy-init="true“ ...>
实际应用中不把这个属性设置为true.
.prototype (原型)
每次从容器获取bean都是新的对象。每次调用getBean方法,都获取新的实例。
调用调用getBean方法时 bean才实例化
.request
.session
.global session
在配置文件中指定Bean的初始化方法和销毁方法
<bean id="xxx" class="cn.itcast.OrderServiceBean" init-method="init" destroy-method="close"/>
Bean实例化后 ,就会执行init方法, Spring容器通过反射机制来调用。
AbstractApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
ctx.close();//正常关闭spring容器。
相关文章推荐
- Spring2.5学习1.4_bean的作用域及其实例化时期
- spring三种实例化Bean的方式和管理Bean的作用域和Bean的生命周期
- spring学习(二)—spring 的bean的实例化方式(通过配置文件)
- Spring2.5学习1.3_三种实例化bean的方式
- 传智播客 Spring中bean的实例化方式与IOC容器总结
- spring IOC容器实例化Bean的方式与RequestContextListener应用
- spring三种实例化bean的方式
- spring学习教程7-spring容器创建bean对象的方式以及如何处理多个spring配置文件
- [1] Spring中的Bean实例化的三种方式
- spring bean实例化的三种方式
- Bean作用域的配置以及 Spring各种注入方式实例 list set map props
- JavaWeb学习笔记之Spring中bean的作用域
- Spring学习(二十二) Bean配置的三种方式(XML、注解、Java类)介绍与对比
- Spring 实例化bean的方式
- 【Spring学习笔记五】-Bean的作用域
- Spring学习----------Bean配置的三种方式(XML、注解、Java类)介绍与对比
- spring学习日志之一Bean配置的方式
- 详解Spring中bean实例化的三种方式
- Spring视频学习笔记(3)Bean的作用域及自动装配
- Spring学习第十一天:通过工厂方式配置Bean