什么是Spring

    科技2024-06-28  83

    Spring之旅

    什么是Spring?理解IOC(控制反转)从代码层面理解

    什么是Spring?

    Spring(春天),意为给软件行业带来了春天 他的前身是Interface21 Spring理念 : 使现有技术更加实用 . 本身就是一个大杂烩 , 整合现有的框架技术

    Spring就是一个轻量级免费开源的面向切面(AOP)和控制反转(IOC)的框架(容器)

    理解IOC(控制反转)

    从代码层面理解

    新建一个Maven项目---->创建一个Dao包和Service包,里面有它们的接口和具体实现类 1.创建一个dao接口

    public interface UserDao { public void getUser(); }

    它的实现类

    public class UserDaoImp implements UserDao { public void getUser() { System.out.println("获取用户数据"); } }

    2、创建一个Service接口及它的实现类

    public interface UserService { public void getUser(); } public class UserServiceImp implements UserService{ UserDao userDao=new UserDaoSqlSeverImp(); public void getUser() { userDao.getUser(); } }

    测试

    @Test public void test() { UserServiceImp userServiceImp=new UserServiceImp(); userServiceImp.getUser(); }

    想象一下此时我们如果把UserDao的实现类增加几个,

    public class UserDaoMysqlImp implements UserDao { @Override public void getUser() { System.out.println("Mysql获取数据"); } } public class UserDaoSqlSeverImp implements UserDao{ @Override public void getUser() { System.out.println("Sqlsever获取数据"); } }

    此时我们需要去Service里修改对应实现类,假设我们的这种需求非常大 , 这种方式就根本不适用了, 甚至反人类对吧 , 每次变动 , 都需要修改大量代码 . 这种设计的耦合性太高了, 牵一发而动全身 .

    那么我们如何解决????

    我们可以在需要用到他的地方 , 不去实现它 , 而是留出一个接口 , 利用set , 我们去代码里修改下 .

    public class UserServiceImp implements UserService{ UserDao userDao=new UserDaoSqlSeverImp(); public void getUser() { userDao.getUser(); } public void setUserDao(UserDao userDao) { this.userDao=userDao; } }

    测试:

    @Test public void test1() { UserServiceImp userServiceImp=new UserServiceImp(); userServiceImp.setUserDao(new UserDaoMysqlImp()); userServiceImp.getUser(); userServiceImp.setUserDao(new UserDaoOracleImpl()); userServiceImp.getUser(); userServiceImp.setUserDao(new UserDaoSqlSeverImp()); userServiceImp.getUser(); }

    我们发现第二种方式是由我们自行控制创建对象,把主动权交给了调用者,程序不用管怎末去创建,只负责提供一个接口就可。

    IoC 是指在程序开发中,实例的创建不再由调用者管理,而是由 Spring 容器创建。Spring 容器会负责控制程序之间的关系,而不是由程序代码直接控制,因此,控制权由程序代码转移到了 Spring 容器中,控制权发生了反转,这就是 Spring 的 IoC 思想。

    控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependency Injection,DI)

    Processed: 0.010, SQL: 8