什么是spring框架?
1)IOC 控制反转,对象创建责任的反转,在spring中BeanFacotory是IOC容器的核心接口,负责实例化,定位,配置应用程序中的对象及建立这些对象间的依赖。XmlBeanFacotory实现BeanFactory接口,通过获取xml配置文件数据,组成应用对象及对象间的依赖关系。
spring中有3中注入方式,一种是set注入,另一种是接口注入,另一种是构造方法注入。
2)AOP面向切面编程
AOP就是纵向的编程,如下图,业务1 和 业务2 都需要一个共同的操作。与其往每个业务中都添加同样的代码,不如,写一遍代码,让两个业务共同使用这段代码。
spring中面向切面编程的实现有两种方式,一种是动态代理,一种是CGLIB,动态代理必须要提供接口,而CGLIB实现是由=有继承。
3)为什么使用spring框架
在不使用spring框架之前,我们的service层中要使用dao层的对象,不得不在service层中new一个对象。
如下:
下面展示一些 内联代码片
。
//dao层对象
public class UserDao{
public void insert (User user) {}
}
//service层对象
public class UserService{
public void insert(User user) {
UserDao userdao = new UserDao();
userdao.insert(user);
}
}
存在问题:层与层之间的依赖。
使用框架之后:
下面展示一些 内联代码片
。
//dao层对象
public class UserDao{
public void insert(User user){}
}
//service层对象
public class UserService{
private UserDao userdao;
public UserDao getUserdao(){
return userdao;
}
public void setUserdao (UserDao userdao) {
this.userdao=userdao;
}
public void insert(User user){
userdao.insert(user);
}
}
service 层要用dao层对象需要配置到xml配置文件中,至于对象是怎么创建的,关系是怎么组合的都交给了spring框架去实现。
4)框架优点:
轻量级的容器框架没有侵入性
使用IOC容器更加容易组合对象直接间关系,面向接口编程,降低耦合
AOP可以更加容易的进行功能扩展,遵循OCP开发原则;
创建对象默认是单例的,不需要在使用单例模式进行处理
5) 缺点:
业务功能依赖spring特有的功能,依赖与spring环境。
总结:
spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,是一个分层的javaEE一站式轻量级开源框架