Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发.
所谓
控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。
所谓
依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。
为何要使用Spring??
- 可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播。
- 容器提供单例模式支持,开发人员不再需要自己编写实现代码。
- 容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能。
- 容器提供的众多辅作类,使用这些类能够加快应用的开发,如: JdbcTemplate、 HibernateTemplate。
- Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等,这样更便于应用的开发
spring是一个容器,所以开发过程是:
先实例化容器,再实例化bean1.实例化容器
实例化Spring容器常用的两种方式:
由于文件系统会不一样,所以在实际中使用第一种方法,可通过数组传进多个配置文件。
方法一:
在类路径下寻找配置文件来实例化容器
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});
PersonService personService1 = (PersonService)ctx.getBean("personService");
只是一个配置文件 (看它的构造方法)
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
bean的名字(推荐用这个,如果没有特殊字符), 也属于xml文件元素的,必须唯一,而且不能含有特殊字符name可以含有特殊字符,也必须唯一的
方法二:
在文件系统路径下寻找配置文件来实例化容器
ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[]{“d:\\beans.xml“});
2.实例化Bean
当spring容器启动后,因为spring容器可以管理bean对象的创建,销毁等生命周期,所以我们只需从容器直接获取Bean对象就行,而不用编写一句代码来创建bean对象。从容器获取bean对象的代码如下:
ApplicationContext ctx = new ClassPathXmlApplicationContext(“beans.xml”);
OrderService service = (OrderService)ctx.getBean("personService");
三种实例化bean的方式
1.使用类构造器实例化(一般都用这种)
2.使用静态工厂方法实例化
public class OrderFactory {
public static OrderServiceBean createOrder(){
return new OrderServiceBean();
}
}
3.使用实例工厂方法实例化:
public class OrderFactory {
public OrderServiceBean createOrder(){
return new OrderServiceBean();
}
}
Bean的作用域
- <?xml version="1.0" encoding="UTF-8"?>
-
<beans xmlns=""
-
xmlns:xsi=""
-
xsi:schemaLocation="
-
/spring-beans-2.5.xsd">
-
<bean id="personService" class="cn.itcast.service.impl.PersonServiceBean" lazy-init="false"
-
init-method="init" destroy-method="destory">
-
-
</bean>
-
</beans>
bean 默认是单例,默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。由构造方法可以看到
1、lazy-init 默认false,这样容器启动时就可以看到Bean初始化的信息2、scope="prototype",则为原型模式,会创建新的Bean
3、
init-method=”methodName",指定bean初始化时执行的方法,比如数据库的连接
4、
destroy-method=“methodName“,
指定bean摧毁时执行的方法,比如关闭数据库的连接
阅读(487) | 评论(0) | 转发(0) |