springboot 如何让加了 static final修饰的字段赋值
时间: 2024-09-24 16:02:14 浏览: 43
在Spring Boot中,如果想给一个静态final字段赋值,通常是在应用启动类(`Application`或`CommandLineRunner`等)的main方法或者初始化时完成的。由于static final字段一旦定义就不能改变,所以你可以通过以下几种方式设置其值:
1. 直接赋值:在类的静态初始化块(static{})或构造函数中进行赋值,例如:
```java
@SpringBootApplication
public class MyApplication {
// 使用 static 初始化块
static {
StaticFinalField value = SomeClass.SOME_CONSTANT; // 如果是另一个类的静态常量
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
```
或者
```java
@SpringBootApplication
public class MyApplication {
private static final StaticFinalField FIELD_VALUE = SomeClass.calculateStaticValue(); // 自定义计算方法
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
```
2. 构造函数注入:如果你的字段需要依赖其他服务,可以在构造函数中注入并赋值:
```java
@SpringBootApplication
public class MyApplication {
private static final StaticFinalField FIELD_VALUE;
static {
FIELD_VALUE = new SomeService().calculateStaticValue();
}
public MyApplication() {
// 或者这里直接调用calculateStaticValue()
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
```
请注意,虽然Spring Boot能够帮助管理应用程序生命周期,但它本身并不处理静态final字段的赋值,这仍然是标准的Java编程实践。
阅读全文