Spring中的IOC
文章目录
- 1、关于Spring
- 2、关于IOC
- 如 UserController需要UserService实例:那么容器会自动搜索对应类型的service实例,自动的装配到UserController  
1、关于Spring
Spring 就是一个大工厂,可以将所有对象创建和依赖关系维护交给Spring
Spring 提供面向切编程,可以方便的实现对序进行权限拦截、运监控等功能
声明式事务的支持(张三给李四转账,要么同时成功,要么同时失败)只需要通过配置就可以完成对事务的管理,而无手动编程
2、关于IOC
ioc:inverse of control 控制反转:从主动实例化对象,转换到被动获取对象;主要使用的是依赖注入实现。(由容器帮我们查找并注入依赖的对象,对象只能被动的接收依赖对象,依赖对象的获取被反转了。)
依赖注入:程序代码不做定位查询,这些工作容器自行完成,只要在程序中使用对象名称计科,至于对象如何在容器中创建,赋值,查找都由容器内部实现。spring容器中的 SpringApplication里面有如下定义:
package com.situ.spring_1;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// 声明该类是一个SpringBoot的引导类
@SpringBootApplication
// @MapperScan注解,扫描MyBatis Mapper接口类
@MapperScan("com.situ.spring_1.mapper")
public class Spring1Application {
public static void main(String[] args) {
SpringApplication.run(Spring1Application.class, args);
}
}
根据该定义,即可扫描同级下的所有包中的注解,@Controller,@Service等扫描到即可在Spring容器中创建
ioc主要是用来实现对象装配的,比如controller调用service,controller中的service
对象要来自容器,也就是容器要把service对象装配到controller中。spring框架根据set方法(设值注入)或者构造函数实现对象的注入(构造注入)。(但还自动装配用的多)
自动装配(使用注解)?
spring会判断你需要什么类型的对象,然后不用你配置,直接给你实现注入,默认是根据type实现注入的
" class="reference-link">如 UserController需要UserService实例:那么容器会自动搜索对应类型的service实例,自动的装配到UserController

之前我们获取对象
现在通过spring容器获取对象,先配置
获取对象
设值注入和构造注入
如下图当我们需要给UserBiz对象的dao赋值时,应该怎么做?(一个对象种注入另一个对象时)
之前的做法
第一种现在的做法,通过spring实现设值注入
第二种现在的做法,通过spring实现构造注入
总结:
设值注入
自动装配(用注解)
注解的工作原理很简单
1.读取配置信息,知道要扫描哪些包
还没有评论,来说两句吧...