Spring框架从某种程度上看,充当了粘合剂和润滑剂的角色,对Hibernate和Struts2等框架提供了良好的支持,能将响应的Java Web系统柔顺的整合起来,并让它易用。同时,其本身提供了声明式事务等企业级开发不可或缺的功能。
特点:
非侵入式:Spring框架的API不会在业务逻辑上出现。
容器:Spring提供容器功能,容器可以管理对象的声明周期、对象与对象之间的依赖关系。可以写一个配置文件(通常是XML文件),在上面定义对象的名字、是否是单例,以及设置与其他对象的依赖关系。那么容器启动后,这些对象就被实例化好了,直接去用就好了,而且依赖关系也建好了。
IOC:控制反转,即依赖关系的转移,如果以前是依赖与实现,那么现在反转为依赖于抽象,核心思想就是要面向接口编程。
依赖注入:对象与对象之间依赖关系的实现,包括接口注入、构造注入、set方法注入。在spring中只支持后两种。
AOP(Aspect Oriented Programming):面向切面编程,将日志、安全、事务管理等服务(或功能)理解为一个“方面”,以前这些服务通常是直接写在业务逻辑的代码中,有两个缺点:首先业务逻辑不纯净,其次是这些服务被很多业务逻辑反复使用,不能做到复用。AOP解决了上述问题,可以把这些服务剥离出来,形成一个“方面”,可以实现复用;然后将“方面”动态插入到业务逻辑中,让业务逻辑能方便的使用其提供的服务。
搭建Spring开发环境:
通过myeclipse,项目上右键->configure facets->install spring facet,自动在src目录下创建了一个applicationContext.xml的配置文件。
主要JAR作用:
org.springframework.aop-xx.RELEASE.jar:spring面向切面支持,提供AOP实现。
org.springframework.beans-xx.RELEASE.jar:spring IOC的基础实现。
org.springframework.context.support-xx.RELEASE.jar:spring-context的扩展支持,用于MVC方面。
org.springframework.context-xx.RELEASE.jar:spring提供在基础IOC功能上的扩展服务,此外,还提供许多企业级服务的支持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等。
org.springframework.core-xx.RELEASE.jar:spring核心工具包。
org.springframework.instrument.tomcat-xx.RELEASE.jar:spring对Tomcat的连接池的集成。
org.springframework.jdbc-xx.RELEASE.jar:spring对JDBC的简单封装。
org.springframework.orm-xx.RELEASE.jar:spring整合第三方ORM映射支持,如HIbernate、iBatis、Jdo以及spring的JPA的支持。
org.springframework.test-xx.RELEASE.jar:spring对JUnit等测试框架所做的简单封装。
org.springframework.transaction-xx.RELEASE.jar:为JDBC、HIbernate、JDO、JPA等提供一致的声明式和编程式事务管理。
①搭好环境,建com.shw包,建HelloWorld类,方法show(){System.out.println(```)};
②配置applicationContext.xml文件:
添加节点:
③编写测试类:建TestHelloWorld类,通过applicationContext.xml配置文件去获取HelloWorld实例,然后调用show方法输出信息。
package com.shw;
import org.springframework.context.AppliactionContext;
import org.springframework.context.support.ClassPathXmlAppliactionContext;
public class TestHelloWorld{
public static void main(String[] args){
ApplicationContext context=new ClassPathXmlAppliactionContext(“applicationContext.xml”);
HelloWorld hw=(HelloWorld)context.getBean(“hw”);//hw为配置文件中bean的id标识
hw.show();
}