Spring是一个面向切面(AOP)和控制反转的(IOC)的框架

1.IOC控制翻转,为什么叫控制反转呢,因为决定权改变了。

以前是程序员作为主导,现在是利用set注入,把决定权交给了用户。

举个例子:

我们都知道Spring需要Dao层,Service层。

Dao层放实体,一般是Dao接口和DaoImpl实现类。

Service层放服务,一般是Service接口和ServiceImpl。

Service层调用dao层的接口。

 

现在具体要求来了,我们有三种水果。苹果,香蕉和桃子。

对应我们就要有fruitDao,AppleIMPL,bananaImpl,peachImpl。

如果不用IOC,我们就需要在Service层的接口写三个服务,也就是new三个Dao接口

fruitDao apple=new AppleImpl;
fruitDao banana=new fruteImpl;
fruteDao peach=new fruteImpl;//这是随便写的,不能运行哈。

现在是三个水果,以后是不是更麻烦?

麻烦是第一个,当用户需求更改的时候,用户说我不喜欢吃苹果,香蕉和桃子,我需要新的。你是不是还要后续添加,然后修改,根据用户的变化变化是非常错误的。

这时候就想想IOC。

1.我们之前是new一个确定的东西。

2.但是现在我们可以给一个接口fruteDao,fruteDao对应很多的实现类,AppleIMPL,bananaImpl,peachImpl。

3.我们在Service层之前是一个一个new的,现在我们使用一个set方法注入。

public void setFruteDao(FruteDao fruteDao)
{
    this.fruteDao=fruteDao;
}

不要小看这个代码。

之前写的三行都可以删了,写上这个。

只需要你在Test类或者用户访问的那个类里访问时调用set方法,把想要的那个水果传入就好了

fruteService.setFruteDao(水果类)

这样就会把你想要的那个水果传给service,然后弄个实体,不用new了,也就是把控制权交给用户了。

以前是用户要啥,我写啥,我是手动写

现在是用户自己说要啥,然后我站旁边看。相当于我造了个set注入机器,用户自己说,机器自动注入new。我就很轻松啊。

posted on 2021-06-18 17:41  纯正肉包  阅读(50)  评论(0编辑  收藏  举报