java 枚举类实现的单例与 spring boot 枚举类依赖注入
2025-02-22 23:56:57
我们知道,在单例的诸多实现里,枚举类实现的单例是最好的。在 spring boot 应用里,我们也可以使用枚举类来做单例,但是可能会遇到依赖注入的问题,这个问题呢,其实也不是问题,但肯定会困扰不少新手。本文就此展开,先讨论各种单例的优劣,再讨论 spring boot 里 枚举类的依赖注入。
最基础的单例
懒汉式,线程不安全,不推荐!!!
使用 synchronized 关键字
这种写法是解决了上述的并发问题,但是每个线程都是阻塞的,即这个函数同时只有一个线程可访问,这将多核变为了单核。
双重检查的单例
既然每次都给方法加锁很慢,那么,我们可以在该对象为空时才加锁,这样只在第一次创建时会有锁,以后就不用了,性能大幅提升!至于这里的 volatile 关键字,以后有空再说吧。
饿汉模式的单例
这种方式的缺点是没有懒加载,如果确定不需要懒加载,则可以使用这种方式。
匿名内部类实现的单例
这种方式和饿汉模式很像,不过使用了一个匿名内部类,保证不会在调用该类时立即初始化,而是懒加载。
枚举实现的单例
这是本人非常强力推荐的方式,也是本文的重点,在 spring boot 应用里,我们应该如何在枚举类里做依赖注入呢?毕竟它只是个枚举类啊!
其实可以这样:
|
|
最后更新于