Spring MVC 和 Spring Boot 的关系
Spring Boot 的 自动配置到底能解决什么问题
在我们以前使用spring 来开发 java 总是要进行各种配置 每每要进行一个模块的开发 我们就必须要导入相对应的依赖jar包 先当的繁琐 有时候 当我们要导入两个或者多个模块所需要的坐标依赖的时候 有可能导入的依赖版本的问题产生相互冲突 导致 我们开发的增大了阻碍 等等
而Spring boot 的自动配置 后帮我们解决了 开发的难度 总是自动的帮我们把项目的大概率用到的坐标依赖都配置好 而且版本都是相互兼容的 总体来讲 提高了开发人员开发的效率 能把更多的时间都放在写业务代码上 而不是 放在 无聊的各种配置上
IOC的实现 : 容器 加入容器 注入、
加入容器的方式
@Component @Service @Controller @Repository @Configuration 标注在类上 被Spring Boot 扫描到 加入到容器 里面
通过 @Autowired 注入
IOC 的 实例和注入的时机 和 延迟实例化
默认情况下当Spring Boot 的应用启动时 容器就会去扫描 实例对象 然后去注入
如果实现 延迟的实例化
使用@Lazy注解 标注在 被依赖的bean上和 依赖这个bean的Contorller上 才能实现延迟实例化 启动的时候不会实例化 等访问的时候才会实例化
Autowired 的被动注入的方式
bytype 默认情况首先是 按类型注入的 去找实现了这个接口的bean进行注入
1.如果没有找到任何实现这个接口的bean 则报错
找到一个就直接注入
byname 当有多个实现类的时候 按类型注入不行了就会按 命名去注入 再找不到才会报错
Autowired 的主动注入
组合 @Autowired 注解 @Qualifier(value="类名") 强制选择