spring-boot - springboot 问题从属性文件中读取
问题描述
我正在尝试读取Util
类中的属性值。我试过Environment
了@Value
。但它Null
为这些领域带来了价值。
@SpringBootApplication
@EnableJpaAuditing
public class EmployeeApplication {
@PostConstruct
private void init() {
System.out.println("AppInitializator initialization logic ...");
new Util().getTime();
}
public static void main(String[] args) throws Exception {
SpringApplication.run(EmployeeApplication.class, args);
}
}
public class Util {
@Autowired
private Environment env;
@Value("${defaultTimeFormat}")
private String defaultTimeFormat;
public void getTime(){
System.out.println(defaultTimeFormat);
System.out.println(env.getProperty("defaultTimeFormat"));
// method logic here
}
}
我通过将 Util 作为@Service
类并将其依赖项注入EmployeeApplication
如下来解决了这个问题。
@SpringBootApplication
@EnableJpaAuditing
public class EmployeeApplication {
@Autowired
Util util;
@PostConstruct
private void init() {
System.out.println("AppInitializator initialization logic ...");
util.getTime();
}
public static void main(String[] args) throws Exception {
SpringApplication.run(EmployeeApplication.class, args);
}
}
@Service
public class Util {
@Autowired
private Environment env;
@Value("${defaultTimeFormat}")
private String defaultTimeFormat;
public void getTime(){
System.out.println(defaultTimeFormat);
System.out.println(env.getProperty("defaultTimeFormat"));
// method logic here
}
}
但是正确的方法是spring-boot
什么?我需要让它Service/Component/Repository
从属性文件中读取吗?
解决方案
是的,您需要使用@Component
其他注释或其中一个注释对类进行注释,以便 Spring Boot 将其实例化。
只有生命周期由 Spring 控制的对象才能获得由 Spring 注入的值,如果添加@Value
注释就会发生这种情况。
在应用程序启动期间,Spring 使用您已注释的类的单例实例填充应用程序上下文。@Autowired
只有这些类会通过or获得值注入@Value
。
推荐阅读
- java - 使用 RxJava 从异步调用返回值?
- ruby-on-rails - 更新寄存器时如何更新片段缓存?
- c# - 错误 CS0029:无法将类型“ResetOnRespawn”隐式转换为“ResetOnRespawn[]”c# unity
- node.js - Nodejs、Socket.io 将用户重定向到路由
- javascript - 如何扩展 AppInsights JavaScript SDK 错误日志以进行字符串化
- python - 如何在数据框中使用 itertools 组合
- laravel - 仅检索某些雄辩的列
- apache-spark - 了解 Apache Spark 结构化流中带水印的窗口
- css - 引导搜索和过滤输入控制
- javascript - 如何在 HTML 文件中为外部 SVG 文件设置动画?