一文了解SpringBoot中的IOC

目录

1.什么是IOC

2.IOC容器

3.创建IOC容器

4.装配Bean到IOC容器

5.依赖注入


1.什么是IOC

IOC:Inversion of Control 控制反转

Sping中我们把一个个对象称为Bean,以前我们实例一个对象的时候,都会直接New一个

而在Spring中,我们可以把对象创建、组装、管理的权限交给IOC,这就是控制反转

2.IOC容器

Spring中的IOC容器,可以降低对象之间的耦合度,便于测试和维护。

3.创建IOC容器

先声明一个启动类

@RefreshScope
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {
		ApiConstant.SERVER_API_BASE_PACKAGE,
		com.erichfund.yoch.api.constant.ApiConstant.SERVER_API_BASE_PACKAGE,
		com.erichfund.lawwood.api.constant.ApiConstant.SERVER_API_BASE_PACKAGE
})
@EnableAspectJAutoProxy(proxyTargetClass = true,exposeProxy = true)
@SpringBootApplication(scanBasePackages = "com.erich.yand")
@MapperScan("com.erich.yand.dao")
public class TestApplication {

	public static void main(String[] args) {
		SpringApplication.run(TestApplication.class, args);
	}

}

3.1. @SpringBootApplication看作是 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合

@Configuration:代表这是一个Java配置类
@ComponentScan:扫描被@Component (@Service、@Controller、@Mapper等)注解的 Bean
@EnableAutoConfiguration:启用 SpringBoot 的自动配置机制

3.2. TestApplication.class作为参数传入SpringApplication.run()中,SpringApplication.run()在启动SpringBoot的过程中会根据配置类TestApplication来生成IoC容器。

3.3. @EnableFeignClients 用于启用Feign客户端。Feign是一个声明式的Web服务客户端,可以简化HTTP API的调用。使用@EnableFeignClients注解可以将Feign客户端集成到Spring Boot应用程序中。

里面记录的是Api的的包信息,比如:

public static final String SERVER_API_BASE_PACKAGE = "com.erich.yand.api";

另外需要注意的是,当我们引入外部系统的Api时,也要把外部系统的Api包信息加进来,这样才会把对应的Api注入到容器里。

3.4. @MapperScan是声明扫描Mapper包信息的路径,因为生成Mapper都是借助Mybatis,没有加@Mapper的习惯,所以这里特别声明一下

4.装配Bean到IOC容器

Spring允许我们通过扫描装配Bean到IoC容器中

@Service用于标注业务层组件
@Controller用于标注控制层组件(如struts中的action)
@Repository用于标注数据访问组件,即DAO组件.
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

另外,假设我们添加了多数据源,里面有两张表,表名一样,直接注入可能会有冲突,所以我们可以借助@Repository注解区分

@Repository("InvUserMapper")

@Repository("InstUserMapper")

5.依赖注入

当我们使用对象时,可以借助@Autowired、@Resource注解,找到对应的Bean并注入。

@Autowired :按类型

@Qualifier:按名称

@Resource :既可以按名称又可以按类型

另外当我们有多个相同名字的Mapper时,可以用下面这种方式区分
@Resource(name = "InvUserMapper")

以上就是对Spring中 IOC的介绍了~~

你可能感兴趣的:(#,进阶篇,spring,boot,java,Ioc,控制反转)