spring 自定义 bean 注入 容器

其他技术

2018-05-19

327

0

技术:java8 + spring 5.0.6.RELEASE

运行环境:IDEA 15.2 + jdk8 + windows 7

demo功能:提供一个将自定义bean注入spring容器的demo

1. 定义启用bena的注解

//只要添加了这个注解, 则可以直接注入Logger类
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({EnableLoggerInit.class})
public @interface EnableLogger {
}

2. 实现注入逻辑

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();
}

3. 测试

bean不需要添加 @service, @resource等类似注解, 也可以注解生效

 

欢迎添加微信,互相学习↑↑↑ -_-

发表评论

全部评论:0条

白老虎

programming is not only to solve problems, ways to think