1.1.Spring介绍
Spring是轻量级Java EE应用开源框架(官网: http://spring.io/ ),它由Rod Johnson创为了解决企业级编程开发的复杂性而创建
1.2.简化应用开发体现在哪些方面?
IOC
解决传统Web开发中硬编码所造成的程序耦合
AOP
实现在运行期间不修改源代码对程序进行增强
粘合剂
Spring是一个超级粘合平台,除了自己提供功能外,还提供整合其他技术和框架的能力
1.3.Spring的体系结构
Spring 框架根据功能的不同大体可分为 Data Access/Integration(数据访问与集成)
、Web
、AOP、Aspects、Instrumentation(检测)、Messaging(消息处理)
、Core Container(核心容器)
和 Test
。
- Core Container: 框架的最基础部分,提供控制反转和依赖注入特性
- AOP :提供了面向切面的编程的实现
- Data Access/Integration:简化了持久层的操作
- Web:提供了Spring MVC Web 框架实现以及与Servlet、WebSocket的集成
- Test:方便程序的测试
1.4.Spring的发展历程
1997年IBM提出了EJB的思想
1998年,SUN制定开发标准规范EJB1.0
1999年,EJB1.1发布
2001年,EJB2.0发布
2003年,EJB2.1发布
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雏形)
2006年,EJB3.0发布
2017年9月发布了Spring的最新版本Spring5.0通用版x
2.Spring IOC
创建工程:
2.1.程序的耦合
耦合:耦合指的就是对象之间的依赖关系。对象之间的耦合越高,维护成本越高。
案例:没有引入IOC容器时系统的Web层、业务层、持久层存在耦合
/** * 持久层实现类 */ public class UserDaoImpl implements UserDao { @Override public void addUser(){ System.out.println("insert into tb_user......"); } }
/** * 业务层实现类 */ public class UserServiceImpl implements UserService { //硬编码:此处有依赖关系 private UserDao userDao = new UserDaoImpl(); public void addUser(){ userDao.addUser(); } }
/** * 模拟表现层 */ public class Client { public static void main(String[] args) { //硬编码:此处有依赖关系 UserService userService = new UserServiceImpl(); userService.addUser(); } }
问题分析:
上边的代码service层在依赖dao层的实现类,此时如果更改dao了层的实现类或此时没有dao层实现类,编译将不能通过。
IOC(工厂模式)解耦:
- 把所有的dao和service对象使用配置文件配置起来
- 当服务器启动时读取配置文件
- 把这些对象通过反射创建出来并保存在容器中
- 在使用的时候,直接从工厂拿