自定义注解使用@Import执行操作
在Java中为了让注解生效,需要利用到反射,但是当我们使用到Spring或者Spring Boot时,我们可以使用Spring的一些机制让自定义注解通过@Import注解完成一些操作。在spring的一些@EnableXX注解中,我们可以看到其上方会有一个@Import注解,比如在@EnableAutoConfiguration中,如下图。
@Import注解中一般填写自动配置类(普通类即可)执行我们要执行的操作,想要更多的了解@Import可以自行百度,本文主要讲述注解生效的流程。
@Import注解可以引导加载我们需要操作的类,这样通过自定义注解即可实现在通过一个注解完成特定的功能,比如@EnableCache注解。
步骤:
- 自定义注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(DemoConfig.class)
public @interface EnableDemo {
}
- 创建执行操作的类
import org.springframework.context.annotation.Bean;
//这里需要@Configuration注解,因为我们已经通过@Import注解将操作引导本类中了。
public class DemoConfig {
@Bean
public Person getPerson (){
//添加注解之后,容器中加入person
Person person = new Person();
person.setName("cay");
person.setAdress("city");
return person;
}
}
- 添加注解,注解可以添加类上,比如Controller等。
@SpringBootApplication
@EnableDemo//添加
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
4. 测试
@Autowired
@Qualifier("getPerson")
Person person;
public Person test13(){
logger.info(person.toString());
return person;
}
- 使用场景
本次测试用例比较简单,只是对spring框架中@Import注解可以引导加载类,从而执行一些操作。在实际生产中,如果我们有写一些 Jar包,让别人使用的场景,可以通过自定义注解让 Jar 的内容进行生效。
本次是对 实际让 jar 生效的一次描述,做了一些变化,没有进行打包测试,但是步骤是一样。这次描述可能有些混乱,有很多不足的地方,如有错误请指出,等到有更深入的了解的时候,会进行清楚的梳理。