目录
1.什么是IOC
2.IOC容器
3.创建IOC容器
4.装配Bean到IOC容器
5.依赖注入
IOC:Inversion of Control 控制反转
Sping中我们把一个个对象称为Bean,以前我们实例一个对象的时候,都会直接New一个
而在Spring中,我们可以把对象创建、组装、管理的权限交给IOC,这就是控制反转
Spring中的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的习惯,所以这里特别声明一下
Spring允许我们通过扫描装配Bean到IoC容器中
@Service用于标注业务层组件
@Controller用于标注控制层组件(如struts中的action)
@Repository用于标注数据访问组件,即DAO组件.
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
另外,假设我们添加了多数据源,里面有两张表,表名一样,直接注入可能会有冲突,所以我们可以借助@Repository注解区分
@Repository("InvUserMapper")
@Repository("InstUserMapper")
当我们使用对象时,可以借助@Autowired、@Resource注解,找到对应的Bean并注入。
@Autowired :按类型
@Qualifier:按名称
@Resource :既可以按名称又可以按类型
另外当我们有多个相同名字的Mapper时,可以用下面这种方式区分
@Resource(name = "InvUserMapper")
以上就是对Spring中 IOC的介绍了~~