SpringIOC&DI

1.IOC

1.1.IOC概述
  • IOC: Inversion Of Control,简称IOC,也被称为控制反转。对象的创建权由程序员主动创建转移到容器,由容器创建、管理对象,这种思想称为控制反转。这个容器称为IOC容器或Spring容器
  • 被IOC容器创建、管理的对象称为Bean对象
  • IOC在上面图中对应的就是创建对象放入到容器中
1.2.IOC注解
  • 想要在程序启动时将对象交由IOC帮我们创建并放入到容器中,那么我们需要告诉IOC哪些类需要交给它创建并管理,此时就需要在类上打上对应的注解

注解

说明

位置

@Controller

@Component衍生注解,表示使用在控制器类上

标注在控制器类上

@Service

@Component衍生注解,表示使用在业务类上

标注在业务类上

@Repository

@Component衍生注解,表示使用在数据访问类上

标注在数据访问类上,使用MyBatis框架后不再使用

@Component

声明bean的基础注解

不属于以上三类时,使用此注解

2.DI

2.1.DI概述
  • DI:Dependency Injection,简称DI,也被称为依赖注入。容器为应用程序提供运行时,所依赖的资源,称之为依赖注入
  • DI在上面图中对应的就是从容器中找到对象并注入给声明的IStudentService对象
2.2.DI注解
  • 想要在IOC将对象创建完成后将Bean对象注入到我们声明的对象中时,需要使用到Spring提供的@Autowired注入注解打到声明对象上就可以实现从容器中自动获取对应实例进行注入

注解

说明

位置

@Autowired

依赖注入注解

标注在需要依赖注入的对象上

3.注解常用参数

value属性

在IOC容器中,每一个Bean都有一个属于自己的名字,可以通过注解的value属性指定bean的名字

CompentScan自定义扫描

@Scope注解

作用域

说明

singleton

单例作用域,Bean对象默认作用域

prototype

多例作用域,每次注入或者通过Spring应用上下文获取的时候,都会创建一个新的bean实例

request

请求作用域,只适用于SpringMVC框架,了解

session

会话作用域,只适用于SpringMVC框架,了解

application

全局作用域,只适用于SpringMVC框架,了解

  • proxyMode属性:表示IOC容器要不要为Bean创建代理,如何创建代理,是使用JDK的动态代理还是使用CGLIB
    • DEFAULT:不为Bean创建代理对象,默认值
    • NO:不为Bean创建代理对象
    • INTERFACES:使用JDK动态代理为Bean创建代理对象
    • TARGET_CLASS:使用CGLIB为Bean创建代理对象

@Lazy注解
  • @Lazy注解可以作用在类上,或者方法上,表示Bean对象开启懒加载
  • 注意:使用@Lazy的前提是要操作的Bean要使用默认的单例模式,多例Bean无法开启懒加载,因为多例Bean本身就是使用时才创建
  • value属性:指定是否开启懒加载
    • true:开启懒加载,默认值
    • false:关闭懒加载

4.依赖注入

属性注入

setter注入

构造器注入

5.多同类型Bean注入

@Primary
  • @Primary:当存在多个相同类型的Bean注入时,在要使用的类上加上@Primary注解,来确定默认的实现
  • 在StudentAServiceImpl类上加上@Primary

@Qualifier
  • @Qualifier注解:指定当前要注入的bean对象。 在@Qualifier的value属性中,指定注入的bean的名称
  • @Qualifier注解不能单独使用,必须配合@Autowired使用

@Resource
  • @Resource注解:是按照bean的名称进行注入。通过name属性指定要注入的bean的名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值