java - 为什么我在 Spring 实例化的组件中找到静态字段?

标签 java spring static

这不是一个问题,而是一个好/坏实践问题。 请参阅下面的代码...

为什么我在 Spring 实例化的组件中经常看到静态常量(以及记录器)?

这是我的推理(正确吗?)

1/Spring 将我的类实例化为单例

2/所以,静态方法绝对没有用(此外,Spring Autowiring 的字段系统上都是非静态字段

3/所以,静态字段是没有用的,因为我所有的方法都将是实例方法。

所以,好的静态常量可以被实例方法使用,但绝对没有用!

@Component
public class Fac {

    private static final String ROLE_TARGET = "target";

    @Resource
    private Mapper mapper;

    @PostConstruct
    public void init() {
        Map<String, Boolean> roles = new HashMap<>();
        roles.put(ROLE_TARGET, Boolean.TRUE);
    }

    //other methods below..

}

最佳答案

常量和其他方法如 getLogger 不受 Spring 控制

因此,如果它适合您的应用程序(并且每个应用程序都有常量)并且可以与 Spring 一起工作,那么它可以是静态的

关于java - 为什么我在 Spring 实例化的组件中找到静态字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57647927/

相关文章:

java - Maven JAXB 插件的区别

java - 在 Windows 10 中找不到 MySQL JDBC 驱动程序

java - jDBI 从文件创建语句

java - Spring @Value 注解中可以指定多个属性名称吗?

java - 可以将 Gson 实例用作模型 bean 中的静态字段(重用)吗?

java - 在 Java 8 中使用并行流时,我对同一请求得到不同大小的响应。任何人都可以提供有关如何处理此问题的见解吗?

java - Spring Security SAML - 如何配置客户端身份验证?

用于 REST API (Tomcat) 的 Spring Security Kerberos SSO

C++ : initialize static member large array

C数据段标识