技术:java8 + spring 5.0.6.RELEASE
运行环境:IDEA 15.2 + jdk8 + windows 7
demo功能:提供一个将自定义bean注入spring容器的demo
//只要添加了这个注解, 则可以直接注入Logger类
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({EnableLoggerInit.class})
public @interface EnableLogger {
}
public class EnableLoggerInit implements ImportBeanDefinitionRegistrar {
private BeanDefinitionRegistry beanDefinitionRegistry;
private final String INITMETHOD = "init";
private final String DESDROYMETHOD = "dispose";
public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry beanDefinitionRegistry) {
this.beanDefinitionRegistry = beanDefinitionRegistry;
init();
}
private void init() {
BeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition(Logger.class)//Logger定义
.setInitMethodName(INITMETHOD)
.setDestroyMethodName(DESDROYMETHOD)
.getBeanDefinition();
this.beanDefinitionRegistry.registerBeanDefinition("Logger", beanDefinition);
}
}
public class Logger implements IBean {
public String get(String id) {
return id;
}
public void init() {
}
public void dispose() {
}
}
public interface IBean {
void init();
void dispose();
}
bean不需要添加 @service, @resource等类似注解, 也可以注解生效
欢迎添加微信,互相学习↑↑↑ -_-
白老虎
programming is not only to solve problems, ways to think
grafana 级连 菜单 templating (variables) 配置
rocketmq 集群搭建 (2master + 2slave + 2namesrv)
AI 机器人 抓取 微信 聊天中的 百度网盘 分享地址和密码