Spring的概念

Spring是一个清量级框架,她大大简化了Java企业级开发,提供了强大,稳定的功能,有没有额外的负担,让人们在使用它做每件事情的时候都有得体的优越感的感觉.

Spring有两个主要的目标:一是让现有技术更易于使用,二是促进良好的编程习惯

spring是一个全面解决的方案,但它坚持一个原则:不重新发明轮子.已经有较好解决方案的领域,

spring绝不做重复性的实现

列如:对象持久化和ORM,Spring只是对现有的JDBC.mybatis.Hibernate等技术提供支持,让他们更加的便于使用

Spring框架由大约20个功能框架组成

这些模块分成六个部分,分别是Core Container,Data Access/InteGration,Web,AOP,Instrumentation及Test

Spring Core是框架最基础部分,提供IoC特性.spring Context为企业级开发提供了便利和集成的工具

Spring AOP是基于Spring Core的符合规范的面向切面编程的实现.Spring JDBC提供了JDBC的抽象层,

简化了JDBC代码,同时使代码更加健壮.

Spring IoC

理解控制反转

控制反转,也称依赖注入,是面向对象编程中的一种设计理念,用来降低程序代码之间的耦合度

什么是依赖关系

例子:

public interface UserDao{
    
    void save();






}    
public class UserDaoImpl implments UserDao{
        public void save(){
                System.out.println("实现save");
}
}
//........不写UserService巨口了
public class UserserviceImpl implements UserService{
    UserDao dao=new UserDaoImpl();
Public void save()
{
}
}

以上代码UserServiceImpl对UserDaoImpl存在依赖关系.这样的代码是很常见的,但是存在一个严重的问题,即他们存在高度耦合,如果因为需求变化需要变化需要替换

UserDao的实现类,将导致UserServiceImpl中的代码随着发生修改.如此程序不具备优良的可扩展性,可维护性,甚至在开发中难以测试

我们可以利用简单工厂和工厂方法模式的思路来解决问题

public class UserDaoFactoty{
  public static UserDao getInstance()
{
//创建Dao实例的过程
}  
}
public class UserServiceImpl implenments UserService
{
 user dao=UserDaoFactory.getInstance();
}

这里的用户Dao工厂类UserDaoFactory体现了控制反转的思想:UserServiceImpl不在依靠自身的代码去获得所依赖的具体DAO对象,而是把这一工作转交给了第三方

从而避免了和UserDao实现之间的耦合.由此可见,在如何获取控制依赖的对象这件事情上,控制权发生了反转

但这种方式虽然解决了问题,但是大量的工厂类会被引入开发的过程中,明显增加了代码量.

而Spring能够替我们分担这些工作,为我们提供完整的ioC实现,让我们专注于业务类和DAO类的设计

原文地址:https://www.cnblogs.com/liuzhiw/p/7687647.html