注册条件

注入到容器内实体类型对象的属性都是null,这些对象并没有什么实际的意义,因为实体类的对象就是来封装对象的,结果你这些对象中什么都没有;

解决方法是

1.给这些属性赋值然后再注入bean

但是这些属性又是固定的不是很好,所以写入到配置文件中

将配置文件中的内容进行注释,发现直接报错

但是想要的效果是在配置文件中没有找到对应值,就不进行注入bean,有值的情况下才进行注入

SpringBoot提供了设置注册生效调价的注解@conditional

以下是基于该注解的衍生注解

以下三个是常用的注解

@ConditionalOnProperty

这样就没有注入Country这个类

打开配置这样就注入了

@ConditionalOnMissingBean

@ConditionalOnClass

目前我环境中的web依赖是注释掉的

自动配置原理

为什么要学习自动配置原理

1.在实际开发中我们经常会定义一些公共的组件,然后提供给各个部门使用,为了使用方便我们会将公共的组件定义为starer,如果你想自定义starter,就必须先了解自定义配置原理

2.应对,面试

自动配置

遵循预定大约配置的原则,在boot程序启动后,起步依赖中的一些bean对象会自动注入到ioc容器

之前我们注入bean并不是自动注入配置

源码分析

举例:程序引入spring-boot-starter-web起步依赖,启动后,会自动向ioc容器中注入DispatcherServlet类

自动配置注解

总结

2.7之前的配置类是写在spring.factories中的,2.7-3.0spring.factories和imports都可以,3.0以后只支持imports

如何实现自动配置

根据以上实现思路写出以下2.0的脚本文件

引入

这个jar包可以完成自动配置

面试回答

自定义stater

场景

在实际开发中,经常会定义一些公共组件,提供给各个项目团队使用。而在SpringBoot的项目中,一般会将这些公共组件封装为SpringBoot的starter

创建自定义mybatis的starter

步骤

创建maven工程

工程1

工程2

原始mybatis的文件结构

添加依赖包

创建自动配置类

更换自己写的dmybatis-spring-boot-starter依赖,运行

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐