这可能是Spring Boot Starter 讲的最清楚的一次了( 二 )


这可能是Spring Boot Starter 讲的最清楚的一次了

文章插图
  • AutoConfigure 注解
除了在 Spring Boot Starter 中使用自动配置类,我们还可以通过 AutoConfigure 注解来实现自动配置 。AutoConfigure 注解是 Spring Boot 提供的一个注解,它可以用来自动配置 Spring 应用程序 。
AutoConfigure 注解的使用方法很简单,只需要在 Spring Boot 应用程序中的测试类上加上该注解,就可以实现自动配置 。例如,我们可以在一个测试类中加上 @AutoConfigureMockMvc 注解,来自动配置 Spring MVC 的 MockMvc 。
AutoConfigure 注解的实现原理与 Spring Boot Starter 类似,也是基于 Spring Boot 的自动配置机制实现的 。AutoConfigure 注解中包含了需要自动配置的 Bean 的全限定名,Spring Boot 在启动时会自动扫描所有包含 AutoConfigure 注解的类,根据其中的配置来自动配置 Bean 。
AutoConfigure 注解的命名规则也非常重要,它决定了自动配置的触发条件 。Spring Boot 的 AutoConfigure 注解命名规则是“*-autoconfigure”,例如,Spring MVC 自动配置的注解为“@AutoConfigureMockMvc” 。
  • Enable 注解
除了使用 AutoConfigure 注解来自动配置 Spring 应用程序外,我们还可以使用 Enable 注解来开启某些特性 。Enable 注解是 Spring Boot 提供的一个注解,它可以用于开启某些功能或特性 。
Enable 注解的使用方法也很简单,只需要在 Spring Boot 应用程序中的配置类上加上该注解,就可以开启相应的功能或特性 。例如,我们可以在一个配置类中加上 @EnableScheduling 注解,来开启 Spring 的定时任务功能 。
Enable 注解的实现原理与 AutoConfigure 注解类似,也是基于 Spring Boot 的自动配置机制实现的 。Enable 注解中包含了需要开启的功能或特性的全限定名,Spring Boot 在启动时会自动扫描所有包含 Enable 注解的类,根据其中的配置来开启相应的功能或特性 。
Enable 注解的命名规则也非常重要,它决定了开启的功能或特性 。Spring Boot 的 Enable 注解命名规则是“Enable*”,例如,开启 Spring 定时任务的注解为“@EnableScheduling” 。
除了使用 AutoConfigure 注解来自动配置 Spring 应用程序外,我们还可以使用 Enable 注解来开启某些特性 。Enable 注解是 Spring Boot 提供的一个注解,它可以用于开启某些功能或特性 。
Enable 注解的使用方法也很简单,只需要在 Spring Boot 应用程序中的配置类上加上该注解,就可以开启相应的功能或特性 。例如,我们可以在一个配置类中加上 @EnableScheduling 注解,来开启 Spring 的定时任务功能 。
Enable 注解的实现原理与 AutoConfigure 注解类似,也是基于 Spring Boot 的自动配置机制实现的 。Enable 注解中包含了需要开启的功能或特性的全限定名,Spring Boot 在启动时会自动扫描所有包含 Enable 注解的类,根据其中的配置来开启相应的功能或特性 。
Enable 注解的命名规则也非常重要,它决定了开启的功能或特性 。Spring Boot 的 Enable 注解命名规则是“Enable*”,例如,开启 Spring 定时任务的注解为“@EnableScheduling” 。
四、Spring Boot Starter 例子下面是一个简单的 Spring Boot Starter 例子,它可以用来快速集成 MyBatis:
public class MyBatisAutoConfiguration {@Autowiredprivate DataSource dataSource;@Beanpublic SqlSessionFactory sqlSessionFactory() throws Exception {SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(dataSource);return sessionFactory.getObject();}}@Configuration@ConditionalOnClass(SqlSessionFactory.class)@EnableConfigurationProperties(MyBatisProperties.class)@AutoConfigureAfter(DataSourceAutoConfiguration.class)public class MyBatisAutoConfiguration {private final MyBatisProperties properties;public MyBatisAutoConfiguration(MyBatisProperties properties) {this.properties = properties;}@Bean@ConditionalOnMissingBeanpublic SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {SqlSessionFactoryBean factory = new SqlSessionFactoryBean();factory.setDataSource(dataSource);factory.setTypeAliasesPackage(this.properties.getTypeAliasesPackage());factory.setMapperLocations(this.properties.resolveMapperLocations());return factory.getObject();}}@ConfigurationProperties(prefix = "mybatis")public class MyBatisProperties {private String typeAliasesPackage;private String[] mapperLocations;// 省略 getter 和 setter 方法} 在上面的例子中,我们定义了一个名为 MyBatisAutoConfiguration 的自动配置类,它会自动配置 MyBatis,并将其注册为 Spring Bean 。另外,我们还定义了一个名为 MyBatisProperties 的配置类,它用于读取 MyBatis 的配置属性 。这样,开发人员只需要引入 Spring Boot MyBatis Starter,就可以快速集成 MyBatis,并进行数据库操作 。


推荐阅读