轻巧

Spring Boot的自动配置原理

2022-10-13  本文已影响0人  lynnnnyl

一、引导加载自动配置类@SpringBootApplication

@SpringBootApplication是@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan注解的合成注解。

1、@SpringBootConfiguration

打开里面是@Configuration注解,代表当前启动类也是一个配置类

2、@ComponentScan

Spring注解,指定包扫描规则

3、@EnableAutoConfiguration

打开@EnableAutoConfiguration,里面有以下两个注解:

@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
3.1 @AutoConfigurationPackage

里面有@Import({Registrar.class}),利用Registrar将MainApplication所在包下的所有组件都导入容器中。

3.2 @Import({AutoConfigurationImportSelector.class})

可以从META-INF/spring.factories位置来加载一个文件:默认扫描当前项目中所有META-INF/spring.factories位置的文件。

二、按需开启自动配置项

虽然127个场景的所有自动配置在启动的时候默认全部加载,但是会通过@Conditional条件装配进行按需加载。

三、修改默认配置

SpringBoot默认会在底层配好所有的组件,但如果用户配置了,以用户的配置优先。

总结:

开发技巧

1、Lombok——简化JavaBean开发

常用的lombok注解有以下:

@Data:生成已有属性的getter和setter方法,在程序编译的时候自动生成,原代码中不显示

@ToString:重写toString方法

@EqualsAndHashCode:重写hashcode方法

@AllArgsConstructor:全参构造器

@NoArgsConstructor:无参构造器

2、Spring Initializr

快速创建一个Spring Boot项目,不用自己引入starter。

Mybatis Generator&通用Mapper

一、Mybatis Generator

---Mybatis提供的代码生成工具,通过配置generatorConfig.xml文件,执行MyBatis Generator命令,即可自动生成以下三类文件:

  1. 持久化对象(PO),也叫实体文件,可以在配置文件中设置一个数据库表对应生成一个PO类
  2. 操作数据库的接口(DAO),数据库操作方法都在此接口中定义,Mapper类
  3. CRUD sql的Mapper XML配置文件

二、generatorConfig.xml文件

文件结构如下,<generatorConfiguration>以及<context>下的子元素都有严格的顺序。

更详细的解释见:https://blog.csdn.net/isea533/article/details/42102297

1、配置文件头
    
<!DOCTYPE generatorConfiguration PUBLIC
        "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    
2、根节点:<generatorConfiguration>,无任何属性,中间写配置
   
<generatorConfiguration>
    <context>
        <property>...</property>
        <!-- 定义插件 -->
        <plugin>...</plugin>
        <!-- 注释 -->
        <commentGenerator> ... </commentGenerator>
        <!-- jdbc连接 -->
        <jdbcConnection> ... </jdbcConnection>
        <!-- 类型转换 -->
        <javaTypeResolver> ... </javaTypeResolver>
        <!-- 生成实体类配置 -->
        <javaModelGenerator> ... </javaModelGenerator>
        <!-- 生成Mapper.xml文件配置 -->
        <sqlMapGenerator> ... </sqlMapGenerator>
        <!-- 生成Mapper.java 接口-->
        <javaClientGenerator> ... </javaClientGenerator>
        <!-- schema为数据库名,tableName为对应的数据库表名 -->
        <table> ... </table>


    </context>
</generatorConfiguration>

三、通用Mapper

在generatorConfig.xml文件的<context>元素下增加<plugin>元素,type属性可以设置为通用Mapper。在<plugin>元素下设置子元素<property>,可以添加一些自定义配置,自动生成注解和自动添加lombok注解。

<!-- 使用通用mapper提供的插件 -->
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
    <!-- 所有mapper继承的通用mapper,如果对mapper有进行扩展,可以修改此值 -->
    <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
    <property name="caseSensitive" value="true"/>
    <property name="forceAnnotation" value="true"/>
    <property name="lombok" value="Data"/>
</plugin>
上一篇 下一篇

猜你喜欢

热点阅读