多数情况下,Spring Boot都是自动去评估路径和探测配置的信息,然后快速获取简单应用。但是,有时候,我们想提供配置类,但是要求不需要Spring Boot去自动发现这个配置是否包含,也就是说,我们想自己判断这个配置的有用性。

这样的话,我们将修改注释而不是spring.factories的路径。

4.4.1代码实现

1.首先,我们需要注释掉count-starter/src/main/resource/spring.factories文件下的配置。

#org.springframework.boot.autoconfigure.EnableAutoConfiguration =\
#org.test.bookpubstarter.dbcount.DbCountAutoConfiguration

2.接着,我们需要创建注释。我们将会创建一份新的文件,名称是EnableDbCounting.jaa在路径src/main/java/org/owen/bookpubstarter/dbcount下面。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import(DbCountAutoConfiguration.class)
@Documented
public @interface EnableDbCounting {
}

3.我们将创建好的标签@EnableDbCounting注释加入到BookPubApplication类中,并且移除掉dbCountRunner(…)方法。

@SpringBootApplication
@EnableScheduling
@EnableDbCounting
public class BookPubApplication {
public static void main(String[] args) {
SpringApplication.run(BookPubApplication.class, args);
} @
Bean
public StartupRunner schedulerRunner() {
return new StartupRunner();
}
}

4.启动项目。

4.4.2代码说明

执行程序,你将会看到所有打印的总数信息都是0,尽管StartupRunner打印了Number of books:1。具体信息如下:

o.t.b.dbcount.DbCountRunner : AuthorRepository has 0 entries

o.t.b.dbcount.DbCountRunner : BookRepository has 0 entries

o.t.b.dbcount.DbCountRunner : PublisherRepository has 0

entries

o.t.b.dbcount.DbCountRunner : ReviewerRepository has 0 entries

org.test.bookpub.StartupRunner : Welcome to the Book Catalog

System!

org.test.bookpub.StartupRunner : Number of books: 1

这是因为Spring Boot是随机执行CommandLineRunner,当我们改为了配置@EnableDbCounting注释时,它会有BookPubApplication类之前获取进程。因为数据的初始化是在StartupRunner.run(…)的方法中,但是程序的启动是先去调用DbCountRunner.run(…)的方法,所以打印的信息是0.

如果我们想要按照顺序来执行,我们可以加入@Order的注释。让我们在StartupRunner类上面加入@Order(Ordered.LOWEST_PRECEDENCE-15).因为加入了LOWESR_PRECENDENCE会确保StartupRunner会被执行之后才执行DbCountRunner.加入之后启动我们的程序,这个时候看到的就不是0的信息了。

在spring.factories文件中没有了包含的配置信息,Spring Boot并不知道DbCountAutoConfiguration类需要包含在应用的上下文中。在默认的情况下,Spring Boot在启动时,只会去扫描org.owen.bookpub.*下的配置信息。然而,org.owen.bookpub和org.owen.bokpubstarter.dbcount的包路径是不一样的,所以后者是不被扫描的。但是我们新创建了注释,@EnableDbCounting注释中引入了@Import(DbCountAutoConfiguration.class),这样的话就会让Spring Boot去包含DbCountAutoConfiguration作为应用的一部分。

通过使用注释,spring.factories和确切的bean注释,我人可以灵活地自定义配置Spring Boot的starters在我们的项目中。

4.4使用@Enable*注释去切换配置相关推荐

  1. jenkins页面中英文切换配置

    jenkins中英文切换配置 Jenkins--英文切换成中文 更新了一下jenkins的war包, 结果启动后成英文的了,后来百度出解决方案: 原文地址:https://blog.csdn.net/ ...

  2. 开发规范-java代码注释及IDEA配置代码注释模板

    引(阿里巴巴开发规范-注释规约) [强制]类.类属性.类方法的注释必须使用 Javadoc 规范,使用/*内容/格式,不得使用 // xxx 方式. 说明:在 IDE 编辑窗口中,Javadoc 方式 ...

  3. ctrl+/加注释,去注释_关于以下内容的注释:2014年Google I / O上的“绩效文化”

    ctrl+/加注释,去注释 At Google I/O 2014, Lara Swanson and Paul Lewis discussed performance culture. Since i ...

  4. plsql批量注释快捷键_PLSQL常用配置之窗口/版面保存、SQL格式化/美化、SQL注释\去掉注释等快捷键配置、登陆历史修改配置...

    http://blog.csdn.net/hyeidolon/article/details/8251791 PLSQL常用配置之窗口/版面保存.SQL格式化/美化.SQL注释\去掉注释等快捷键配置. ...

  5. Spring Boot + Mybatis 配合 AOP 和注解实现动态数据源切换配置

    Spring Boot + Mybatis 配合 AOP 和注解实现动态数据源切换配置 前言: 1. 数据库准备: 2. 环境准备: 3.代码部分 4. 测试: 5.等等 6.配合注解实现 7 .测试 ...

  6. 我的Windows Terminal 配置(带注释,附配置文件下载)

    Windows Terminal 配置(带注释,附配置文件下载,更新于2020.5.3) 前言 详细配置(更新于2020.05.03) 前言 windows terminal的确是好用之极的终端工具, ...

  7. aop中joinpoint_Spring AOP示例教程–方面,建议,切入点,JoinPoint,注释,XML配置...

    aop中joinpoint Spring Framework is developed on two core concepts – Dependency Injection and Aspect O ...

  8. linux环境中英文切换配置以及乱码问题

    问题 这几天玩实验室的服务器,默认语言是中文的,有时候是挺不方便的,比如遇见一个比较复杂的问题,提示的信息是中文的,但是百度里根本没有好的资料,只能google,但是难道让我google搜中午么. 因 ...

  9. 锐捷——接口光电切换配置

    配置步骤: Ruijie>enable //进入特权模式 Ruijie(config)#interface gigabitEthernet 0/0 //进入到接口 Ruijie(config-G ...

  10. anaconda在ubuntu19.10下面安装python3.6和python2.7+更换国内源+一键切换配置

    #-------------------国外下载Anaconda3--------------------------------------------------- 下载链接是: https:// ...

最新文章

  1. R计算数组的累计加和(Cumulative Sums)
  2. java的初始化顺序
  3. Java集合查找Map,java:使用hashmap或其他一些java集合创建查找...
  4. 1704班3组—高级软件测试作业—如何计算团队成员贡献分
  5. python PIL图像处理
  6. CUBA 7.2 –有什么新功能?
  7. text/html与text/plain的区别
  8. android tcp 最优窗口,Android 面试必备 - 计算机网络基本知识(TCP,UDP,Http,https)...
  9. vue使用js-cookie写入获取不到_Vue 面向对象 - 实战 - 内容管理系统(五)
  10. 设计素材psd分层模板|临摹搞定促销海报版式!
  11. 企业Linux安全机制遭遇信任危机 SELinux成骇客帮凶?
  12. 广西龙脊梯田景区发生山体崩塌
  13. [WinForm]dataGridView导出到EXCEL
  14. 阿里最新分享Redis全套学习笔记PDF版,图文并茂,太详细了
  15. 前端页面预览word_html页面在线预览word
  16. python处理一段话,使他只存在英文,和数字
  17. 客户关系管理系统(Customer Relationship Management)
  18. 11发布自己的镜像(阿里云)
  19. OpenOCD failed tor read memory at $addr 错误
  20. Bigemap中如何添加其他在线地图源

热门文章

  1. javascript简介和基本语法
  2. CocoaPods加载第三方库
  3. 2015.5.29日总结
  4. [多线程学习笔记] 一个线程安全的队列
  5. 版本控制-代码和文档等用SVN管理
  6. NP、OSPF路由聚合
  7. Ansible详解(十八)——Ansible使用小技巧
  8. React Native常用组件之ListView组件
  9. 获取Windows 10(1)
  10. AutoHotkey 命令列表