gpt4 book ai didi

java - Spring注解、读取属性

转载 作者:行者123 更新时间:2023-12-02 06:00:43 25 4
gpt4 key购买 nike

我有一个小测试项目来测试 Spring 注释:

enter image description here

nejake.properties哪里是:

klucik = hodnoticka

以及App.java是:

@Configuration
@PropertySource("classpath:/com/ektyn/springProperties/nejake.properties")
public class App
{
@Value("${klucik}")
private String klc;



public static void main(String[] args)
{
AnnotationConfigApplicationContext ctx1 = new AnnotationConfigApplicationContext();
ctx1.register(App.class);
ctx1.refresh();
//
App app = new App();
app.printIt();
}



private void printIt()
{
System.out.println(klc);
}
}

它应该打印 hodnoticka在控制台上,但打印 null - 字符串值未初始化。我的代码很糟糕——目前我没有注释驱动的 Spring 经验。上面的代码有什么问题?

最佳答案

您自己创建了该对象

App app = new App();
app.printIt();

Spring 应该如何管理实例并注入(inject)值?

但是您需要

@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}

使属性可用。此外,由于为处理 @Configuration 而初始化的 App bean 是在 @Value 解析器之前初始化的,因此 value 字段尚未设置。相反,声明一个不同的 App bean 并检索它

@Bean
public App appBean() {
return new App();
}
...
App app = (App) ctx1.getBean("appBean");

关于java - Spring注解、读取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22697623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com