什么是Spring

什么是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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值