@postconstruct未生效
时间: 2023-10-09 14:07:54 浏览: 100
java @PostConstruct和@PreConstruct注解
在提供的代码中,有一个类名为YmlConfig的类。该类使用了@Data和@Component注解,并定义了一个变量test01。在YmlConfig类中,还有一个静态变量TEST01,并通过@PostConstruct注解的init()方法将test01的值赋给了TEST01变量。然后,在另一个类XxxConfig中,使用了@Configuration注解,并定义了一个test()方法。在这个方法中,通过静态变量YmlConfig.TEST01获取test01的值。
然而,根据提供的代码,@PostConstruct注解似乎未能生效。原因是@PostConstruct注解所标注的方法在实例化之后才会执行,而静态变量在加载时就会赋值。这导致了在加载时,无法获取到配置文件的数据,从而导致获取到的值为null。
为了解决这个问题,可以使用@Autowired注解将YmlConfig类注入到XxxConfig类中,并通过config实例获取YmlConfig.TEST01的值。这样可以确保在获取配置文件数据之前,YmlConfig类已经被实例化并初始化。以下是修改后的代码示例:
@Configuration
public class XxxConfig {
@Autowired
private YmlConfig config;
@Bean
public void test() {
log.info("yml配置:{}", config.getTest01());
}
}
通过上述修改,可以确保@PostConstruct注解在获取配置文件数据之前执行,从而解决@PostConstruct未生效的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [【踩坑记录】@PostConstruct 注解未生效解决方案](https://blog.csdn.net/babylovewei/article/details/120020742)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文