在日常工作中,有时会需要自定义一些公用组件,引入多项目中使用,希望在引入组件的能自动注入,自动加载执行某个动作。如在使用Spring Cloud中,使用的Eureka注册中心的时候,引入对应依赖即在项目启动的时候就能启动起注册功能。(在Finchley.RELEASE版中才支持此功能,加入了SpringBoot自动配置类);如在自定义的组件加载数据库连接,在引入项目中也能识别等。那如果我们自己编写组件要达到此目的具体需要怎么做呢?
通过配置文件EnableAutoConfiguration自动配置
在编写的组件中使用EnableAutoConfiguration自动配置把要加载执行的方法配置在EnableAutoConfiguration中。在你的组件项目中的resource目录下新增META-INFO/spring.factories文件,在此文件中配置你要加载的类方法
// 指定到类名
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.test.AutoStartDemo
如果要执行多个,中间使用","隔开,指定到要执行的类即可。
通过注解启动
在springboot 中有很多类似Enable*的注解,如在SpringCloud中Feign的使用,除了引入feign依赖包的同时,需要在SpringBoot启动应用中添加@EnableFeignClients注解,即可完成feign的调用。
我们如何实现此类似功能呢?可以完全参考@EnableAutoConfiguration注解的使用方法。
具体步骤:
- 创建Annotation,命名BootstrapDemo
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import({AutoStartDemo.class})
public @interface BootstrapDemo{
}
这里要引入启动类主要是用@Import注解,如果要执行多个中间用","隔开。上面用到的具体注解含义,请查阅AOP相关。
- 在项目启动类中使用@BootstrapDemo 注解,即可完成类似@EnableFeignClients启动要执行动作。
在自定义组件中需要注入到容器中,才能在项目中通过@Autowired使用相关类及方法。