Java @SpringBoot中application.properties的值始终为null
如何从application.properties文件正确注入值 主要类别:Java @SpringBoot中application.properties的值始终为null,java,spring-boot,properties,components,Java,Spring Boot,Properties,Components,如何从application.properties文件正确注入值 主要类别: @SpringBootApplication public class Main { public static void main(String args[]) { SpringApplication.run(Main.class,args); } application.properties文件: my.password=admin 测试等级: @Component publ
@SpringBootApplication
public class Main {
public static void main(String args[]) {
SpringApplication.run(Main.class,args);
}
application.properties文件:
my.password=admin
测试等级:
@Component
public class Test {
@Value("${my.password}")
private String mypassword;
public String getMypassword() {
return mypassword;
}
public void setMypassword(String mypassword) {
this.mypassword = mypassword;
}
public Test(){
System.out.println("@@@@@@@@@@@@@@@@@@@"+ mypassword);
}
}
Console打印始终为null,而不是在创建类时(即调用构造函数时)不插入
应用程序
文件属性中的值,而是稍晚一点。因此,在构造函数中可以看到null
尝试添加一个用@PostConstruct
注释的方法,如下所示,并检查结果:
@PostConstruct
public void afterCreation(){
System.out.println("@@@@@@@@@@@@@@@@@@@"+ mypassword);
}
属性不会在创建类时(即调用构造函数时)被注入,而是在稍后一点注入。因此,在构造函数中可以看到null 尝试添加一个用
@PostConstruct
注释的方法,如下所示,并检查结果:
@PostConstruct
public void afterCreation(){
System.out.println("@@@@@@@@@@@@@@@@@@@"+ mypassword);
}
@pvpkiran我正在尝试将其添加到我的主方法中,其余方法不变
@SpringBootApplication
public class Application {
@Autowired
static Test t;
public static void main(String args[]){
SpringApplication.run(Application.class,args);
t.foobar();
}
}
@pvpkiran我正在尝试将其添加到我的主方法中,其余方法不变
@SpringBootApplication
public class Application {
@Autowired
static Test t;
public static void main(String args[]){
SpringApplication.run(Application.class,args);
t.foobar();
}
}
我不认为Value标记在调用构造函数之前分配值。我可能错了,但是在一个新函数上使用PostConstruct标记并打印值,看看是否有效。你是对的,谢谢你的帮助。我认为值标记不会在调用构造函数之前赋值。我可能错了,但是在一个新函数上使用PostConstruct标签并打印值,看看是否有效。你是对的,谢谢你的帮助谢谢,你是对的。但我还有一个问题。它与@PostConstruct一起工作,但是当我试图创建Test t=newtest()时;并调用afterCreation(),它将再次打印null。在springboot中有没有其他创建对象的方法?因为我也试过“@”自动连线测试t;然后调用foobar(),但我得到了nullpointer异常,当你新建时,你正在创建一个新对象。而不是春豆。因此
@value
或任何spring注释都没有任何意义,因此为空。在spring环境中,使用new
是一种犯罪:)谢谢,但是我该如何创建对象呢?我想我可以在我的“@”组件上调用@Autowired。但是我只剩下空指针了。你能举一个例子说明你在描述什么吗。如果您的类是一个bean(有@component、@service、…)注释之一),那么自动连接不应该为空,前提是您使用的@autowired
类也是一个bean。我将很快在答案中发布它,但问题可能出在@bean部分,因为我只是使用“@”组件谢谢,您是对的。但我还有一个问题。它与@PostConstruct一起工作,但是当我试图创建Test t=newtest()时;并调用afterCreation(),它将再次打印null。在springboot中有没有其他创建对象的方法?因为我也试过“@”自动连线测试t;然后调用foobar(),但我得到了nullpointer异常,当你新建时,你正在创建一个新对象。而不是春豆。因此@value
或任何spring注释都没有任何意义,因此为空。在spring环境中,使用new
是一种犯罪:)谢谢,但是我该如何创建对象呢?我想我可以在我的“@”组件上调用@Autowired。但是我只剩下空指针了。你能举一个例子说明你在描述什么吗。如果您的类是一个bean(有@component、@service、…)注释之一),那么自动连接不应该为null,前提是您使用的@autowired
类也是一个bean。我将很快在答案中发布它,但问题可能出在@bean部分,因为我只是使用了“@”Component意识到我现在可能正在做一些spring异端,但有人能这么善良,给我展示一个使用@Autowired创建对象并在代码中某处调用其方法的示例吗?我在任何地方都找不到它。我意识到我现在可能在做一些spring异端,但有人能这么好,给我举一个使用@Autowired创建对象并在代码中调用其方法的例子吗?我哪儿都找不到。