1、控制反转:IOC:Inversion of Control(应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的,控制的权力转移到了容器)
原来:
public class PersionServiceBen { private PersionBean pb = new PersionBean();//高耦合 public void showName(){ System.out.println("name="+pb.name); } }
现在:
public class PersionServiceBen { public void showName(PersionBean pb){ System.out.println("name="+pb.name); } }
2、依赖注入:DI:Dependency Injection:set()、get()、构造方法传参注入:(运行期,动态将对象注入到组件中)
public class PersionBean { String name; String age; public PersionBean(String age) { this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
好处:
1、降低组件之间的耦合度,实现软件各层之间的解耦(Controller-->Service-->Dao)
2、使用Spring容器的很多功能:事务管理、JMS服务、SpringCore核心服务、持久化服务、其他
3、提供单例模式,开发人员不需要自己编写代码实现
4、提供AOP技术,很容易实权限拦截、运行期监控等功能
5、容器提供众多辅助类,使得这些类能够加快应用的开发,如:JdbcTemplate、HibernateTemplate
6、Spring对主流的应用框架提供了集成支持,如:Hibernate、JPA、Struts等