SpringBoot常见功能特性分析:
- SpringBoot 应用启动入口
- 容器启动之后执行的操作
- Profile环境配置
- 配置信息封装成实体类
- 定时任务
(1)SpringBoot应用启动入口
查看@SpringBootApplication
查看@SpringBootConfiguration
因此,@SpringBootApplication实际上是由@Configuration、@EnableAutoConfiguration、@ComponentScan注解所修饰的一个组合注解。
@ Configuration:一个类级的注解,只是对象是一个Bean定义的源。@ Configuration类通过@Bean注解的公共方法声明Bean,@Bean注释是用来表示一个方法实例化、配置和初始化,是由Spring IOC容器管理的一个新的对象。
测试@Configuration注解:
该类由@Configuration注解,并编写了使用public修饰@Bean注解的方法restTemplate
因此,方法返回的RestTemplate就可以交由Spring IOC容器进行管理,使用时可以使用@Autowired注解注入。而且,在此方法内可以方便地对RestTemplate(Bean)做属性方面的定制工作。
@EnableAutoConfiguration:启用Spring应用程序上下文的自动配置,试图猜测和配置我们可能需要的Bean,自动配置类通常采用基于类路径classpath和已经定义的Bean对象进行应用。Spring的一个核心功能点。
@ComponentScan:为@Configuration注解的类去配置组件的扫描指令,同时提供了与Spring XML元素并行的支持,如果指令的包没有被定义,则将从声明该注解的类所在的包进行扫描。通俗点讲,该注解会自动扫描指令包下全部标有@Component注解(包括@Componet下的子注解)的类,并把它们注册为Spring IOC容器中的一个Bean。
(2)容器启动之后执行的操作
Runner01实现接口CommandLineRunner
Runner02实现接口ApplicationRunner
默认情况下,ApplicationRunner有优先于CommandLineRunner执行
若想规定多个Runner执行的顺序,可以通过@Order注解去标记执行的顺序
Runner01:
Runner02:
执行结果:
(3)Profile环境配置
在写应用程序时,可能需要根据不同的环境来读取配置文件,如开发、测试、生产三个不同的环境,则需要定义三个不同环境下的配置。
因此,可以在application.yml中合理地编排这些环境配置
(4)将配置信息封装成实体类
配置文件信息:
实体类:
功能:读取配置信息并自动封装成实体类
@ConfigurationProperties同类的配置信息自动地封装成实体类。并可以指定配置信息的前缀,在此指定了前缀为“adconf.mysql”的配置信息。
因此,MySQLConfig类中的四个属性就会根据配置文件中前缀为“adconf.mysql”下的配置信息自动填充,封装成实体类,方便程序调用。
(5)定时任务
在SpringBoot主程序中,需要加入@EnableScheduling注解,以启动定时任务的配置
创建定时任务的实现类:
@Scheduled:定义常用定时任务的指令方式
执行结果:
每隔一秒执行一次。