Spring 是什么

Spring 是什么 Spring 是分层的 JAVA SE/EE 应用 full-stack 轻量级开源框架以 Ioc(Inverse Of Control:反转控制)和AOP(Aspect OrientedProgramming:面向切面编程)为内核提供了展现层 SpringMVC 和持久层 Spring JDBCTemplate 以及业务事务管理等众多的企业级应用技术还能整合开源世界众多著名的第三方框架和类库逐渐成为使用最多的JavaEE 企业应用开源框架。Spring 发展历程1997年IBM提出了EJB的思想1998年, SUN 制定开发标志规范 EJB1.01999年 EJB1.1发布2001年,EJB2.0发布2003年,EJB2.1发布2006年,EJB3.0发布Rod Johnson(Spring之父)Expert One-to-One J2EE Design and Development(2002)阐述了 J2EE 使用EJB 开发设计的优点及解决方案Expert One-to-One J2EE Development without EJB(2004)阐述了 J2EE 开发不使用EJB的解决方案(Spring 雏形)2017 年9月发布了Spring的最新版本 Spring5.0通用版(GA)1.3.Spring的优势1)方便解耦简化开发通过Spring提供了 IOC 容器可以将对象间的依赖关系交由 Spring进行控制避免硬编码所造成的过度耦合。用户也不必再为单例模式类属性文件解析等这些很底层的需求编写代码可以更专注于上层应用。2)AOP编程的支持通过Spring的AOP功能方便进行切面编程许多不容易传统OOP实现的功能可以通过AOP轻松实现。3)声明式事务的支持可以将我们从单调烦闷的事务管理代码种解脱出来通过声明式方式灵活的进行事务管理提高开发效率和质量。4)方便程序的测试可以用非容器的编程方式进行几乎所有的测试工作测试不再是昂贵的操作而是随手可做的事情。5)方便集成各种优秀框架Spring对各种优秀框架(Struts,Hibernate,Hessian,Quartz等)的支持6)降低JAVAEE API 的使用难度Spring对 JAVAEE API(如 JDBC,JAVAMAIL,远程调用等)进行了薄薄的封装曾使这些API的使用难度大为降低。7)Java 源码是经典学习范例Spring的源代码设计精妙结构清晰匠心独用处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。它的源码无意是Java技术最佳的范例。1.4Spring的体现结构 (1)DataAccess/Integration: JDBC/ORM/OXM/JMS/Transactions (2)WEB: WebSocket/Servlet/Web/Portlet (3)AOP (4)Aspect (5)Instrumentation (6)Messaging (7)CoreContainer :核心容器 Beans Core Context:上下文 SpEL:spring的表达式语言。 (8)Test 2.1Spring程序开发步骤 com.ycl.service.UserServiceImpl //UserDao userDao new UserDaoImpl() 有了xml的配置就不需要这个了。 UserDao userDao Spring客户端.getBean(id标识); ↓ ↓ Spring框架 读取xml配置文件 根据id标识获取Bean全限定名 ↑ ↓ xml配置文件 id标识com.ycl.dao.UserDaoImp ↑ ↑ com.ycl.dao.UserDaoImpl save()方法 update()方法 (1)导入 Spring开发的基本包坐标 (2)编写Dao接口和实现类 (3)创建Spring核心配置文件 (4)在Spring配置文件中配置 UserDaoImpl (5)使用Spring的API 获得Bean实例 pom.xml project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd modelVersion4.0.0/modelVersion groupIdcom.ycl/groupId artifactIdspring_04/artifactId packagingwar/packaging version1.0-SNAPSHOT/version namespring_04 Maven Webapp/name dependencies dependency groupIdorg.springframework/groupId artifactIdspring-context/artifactId version5.0.5.RELEASE/version /dependency /dependencies /project #接口定义 package com.ycl.dao; public interface UserDao { public void save(); } #接口的实现类定义; package com.ycl.dao.impl; import com.ycl.dao.UserDao; public class UserDaoImpl implements UserDao { public void save(){ System.out.println(save running...); } } #applicationContext.xml 定义 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd bean iduserDao classcom.ycl.dao.impl.UserDaoImpl/bean /beans #demo实现及调用 package com.ycl.demo; import com.ycl.dao.UserDao; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class UserDaoDemo { public static void main(String[] args) { ApplicationContext app new ClassPathXmlApplicationContext(applicationContext.xml); UserDao userDao (UserDao) app.getBean(userDao); userDao.save(); } }Spring的开发步骤;(1)导入坐标(2)创建Bean (类)(3)创建applicationContext.xml(4)在配置文件中进行配置(5)创建 ApplicationContext 对象 getBean