spring总结

spring好处:
1、降低组件之间的耦合度,实现软件各层之间的解耦。
Controller --> Service --> Dao
2、可以使用容器提供众多服务:如事务管理服务,消息服务等。当我们使用容器管理事务时,开发人员不再需要手工控制事务,也不需要处理复杂的事务传播。
3、容器提供单例模式支持。开发人员不再需要自己编写实现代码。
4、容器提供了AOP技术。利用它很容易实现如权限拦截、运行期监控等功能。
5、容器提供了众多辅佐类,使用这些类能够加快应用的开发,如:Jdbc Template、Hibernate Template
6、对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等,这样更便于应用的开发。

 

依赖注入:对象不是从容器中查找他的依赖类,而是容器在实例化对象的时候主动将它的依赖类注入给他
面向切面:通过将业务逻辑从应用服务(如监控和事务管理)中分离出来,实现了内聚开发。应用对象只做它们该做的——业务逻辑,他们不负责(或关心)其他系统的问题(如日志和事务支持)。

 

BeanFactory、ApplicationContext 和 WebApplicationContext 是 Spring 框架三个最核心 的接口,框架中其他大部分的类都围绕它们展开、为它们提供支持和服务。在这些支持类 中,Resource 是一个不可忽视的重要接口,框架通过 Resource 实现了和具体资源的解耦, 不论它们位于何种存储介质中,都可以通过相同的实例返回。与 Resource 配合的另一个接 口是 ResourceLoader,ResourceLoader 采用了策略模式,可以通过传入资源地址的信息, 自动选择适合的底层资源实现类,为上层对资源的引用提供了极大的便利。


private PersonDao personDao = new PersonDaoBean();
public void save(Person person) {
  personDao.save(person);
}
所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。
那么以上的写法可以改为:
public class PersonServiceBean{
private PersonDao personDao;
// 通过构造器参数,让容器把建好的依赖对象注入进PersonServiceBean,当然也可以用setter注入
public PersonServiceBean(PersonDao personDao) {
  this.personDao = personDao;
}
public void save(Person person) {
  personDao.save(person);
}
}

所谓依赖注入就是:在运行期,由外部容器动态地将依赖对象注入到组件中。

 

posted @ 2016-12-06 17:42  mabiao008  阅读(115)  评论(0编辑  收藏  举报