Spring面试+工作必会知识点——IoC

学习三要素:是什么?为什么?怎么做?

1.是什么?为什么?

传统的控制正转:各个底层代码通过之间的关系相互依赖,控制正转的情况下,底层控制上层,从而会导致牵一发而动全身,代码维护工作量超级大;

反转:通过依赖注入,下层的依赖注入到上层,从而实现上层控制下层代码。

2.怎么做?

依赖注入的方式(自己搜一搜项目里用到哪些)

1.Setter: 实现特定属性的pubilc setter方法,来为IOC容器调用所依赖注入的对象

2.Interface: 实现特定的接口,使IOC容器注入所依赖类型的对象

3.Constructor:构造函数,实现特定参数的构造函数,在创建对象时,使IOC注入

4.Annotation: 基于注解的,通过java的注解机制,来让IOC注入依赖的对象,如autowired

看一个基于配置的实现

Spring就是小卖部,你就是A对象,水就是B对象
        第一:在Spring中声明一个类:A
        第二:告诉Spring,A需要B

        假设A是UserAction类,而B是UserService类

<bean id="userService" class="org.leadfar.service.UserService"/>  
<bean id="documentService" class="org.leadfar.service.DocumentService"/>  
<bean id="orgService" class="org.leadfar.service.OrgService"/>  
  
<bean id="userAction" class="org.leadfar.web.UserAction">  
     <property name="userService" ref="userService"/>  
</bean>  

        在Spring这个商店(工厂)中,有很多对象/服务:userService,documentService,orgService,也有很多会员:userAction等等,声明userAction需要userService即可,Spring将通过你给它提供的通道主动把userService送上门来,因此UserAction的代码示例类似如下所示:

package org.leadfar.web;  
public class UserAction{  
     private UserService userService;  
     public String login(){  
          userService.valifyUser(xxx);  
     }  
     public void setUserService(UserService userService){  
          this.userService = userService;  
     }  
}  

        在这段代码里面,你无需自己创建UserService对象(Spring作为背后无形的手,把UserService对象通过你定义的setUserService()方法把它主动送给了你,这就叫依赖注入!),当然咯,我们也可以使用注解来注入。Spring依赖注入的实现技术是:动态代理
【这段是我抄的,原文地址(https://blog.csdn.net/qq_32575047/article/details/79056141 )】

 

 

猜你喜欢

转载自blog.csdn.net/qq_23079393/article/details/89460491
今日推荐