? Spring是轻量级Java EE应用开源框架(官网: http://spring.io/ ),它由Rod Johnson创为了解决企业级编程开发的复杂性而创建
IOC
解决传统Web开发中硬编码所造成的程序耦合
AOP
实现在运行期间不修改源代码对程序进行增强
粘合剂
Spring是一个超级粘合平台,除了自己提供功能外,还提供整合其他技术和框架的能力
Spring 框架根据功能的不同大体可分为 Data Access/Integration(数据访问与集成)
、Web
、AOP、Aspects、Instrumentation(检测)、Messaging(消息处理)
、Core Container(核心容器)
和 Test
。
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
创建工程:
耦合:耦合指的就是对象之间的依赖关系。对象之间的耦合越高,维护成本越高。
案例:没有引入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(工厂模式)解耦: