在springboot中使用枚举类

参考:

https://wenku.baidu.com/view/3712610bb7daa58da0116c175f0e7cd184251804.html

https://blog.csdn.net/u013343616/article/details/120492725

https://blog.csdn.net/qq_20009015/article/details/103722756

枚举类大家都很熟悉,可以约束变量的类型,也可以将枚举变量映射到不同的方法,以减少令人boring的if/else方法。

那枚举类实例方法中只能写System.out.print吗?

如果我想@Autowired其他的Bean怎么办

网络上搜了下,还真能实现。

枚举类自身无法@Autowired,但是它的静态内部类可以。

@Component
public enum OperateCode {

    SET_RELATION() {
        @Override
        void process(MetadataSyncMessage message) {
            SET_RELATION.service.setRelation(message.getRelation());
        }
    },//
    DEL_RELATION {
        @Override
        void process(MetadataSyncMessage message) {
            DEL_RELATION.service.deleteRelation(message.getRelation());
        }
    };//

    private Service service;


    abstract void process(MetadataSyncMessage message);

    @Component
    static class OperateHandler {
        @Autowired
        private Service service;

        @PostConstruct
        public void init() {
            OperateCode[] values = OperateCode.values();
            for (OperateCode value : values) {
                value.service = service;
            }
        }
    }
}

 

posted @ 2022-07-28 16:12  Mars.wang  阅读(1121)  评论(0编辑  收藏  举报