spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架。
(1)、控制反转:使用spring我们不需要去自己创建一个对象,而是spring通过反转机制自动实例化一个需要的对象。
(2)、面向切面:将某个功能抽象为一个切面,降低了与一批对象之间的耦合度,方便对某一功能进行编程。
spring的七个模块分别为:
1.Spring 核心模块:提供了IOC即依赖注入,spring 核心最主要的是beanFactory.
2.Spring AOP: 定义实现了AOP并利用其提供了拦截器实现事务管理.
3.Spring 上下文context模块:用地资源装载和资源邦定,事件移植和透明装载上下文等功能,并继承了spring的核心功能.
4.Spring Web模块:提供web的集成其它提供了ContextLoaderListener并提供了Jsf等集成所需要的类.
5.Spring Dao模块:提供了jdbc抽象层使开发不用去编写jdbc代码能分析数据库厂商的sql错误代码,同事提供编程方式和声明式控制事务.
6.Spring ORM模块:提供了当前的ORM技术框架的集成如hibernate ,ibatis,jdo等.
7.Spring MVC:提供了web mvc的实现,并清楚的划分了web各项功能,如表单生成和校验器等.
实例化spring的方法:
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
一个spring文件中不可出现不同Id,一个bean可以通过一个id进行唯一指定和引用。
spring的注入:
<bean id="bean1" class="....">
<property name="bean2" ref="bean2"></property>
</bean>
<bean id="bean2" class="...">
<property name="属性1" value="..."></property>
<property name="属性2" ref="..."></property>
</bean>
属性1的注入方法为使用属性的setter方法进行注入。
属性2的注入方法为注入依赖的bean,通过ref指定注入另外一个bean。
注:在spring配置文件中配置的各个bean可以在控制层直接使用,但当在jsp页面也调用到控制层的方法,并想通过spring框架实现时,需要在jsp页面获取到指定的bean,然后就可直接使用了。例:
ProjectService projectService = (ProjectService) SpringUtil.getInstance().getFactory().getBean("projectService");
String projectId = request.getParameter("id");
ProjectBean projectBean = projectService.getA(projectId);