Springboot-@Autowired带注入的null

时间:2019-01-19 11:55:52

标签: java spring spring-boot

我有一个Spring-boot项目,由于配置文件,我需要从application.properties文件获取值。

但是在类中注入配置文件时,对象返回null。

Application.properties:

server.ip=000.000.000.000
server.port=0000

配置类:

@Component
@ConfigurationProperties(prefix = "server")
public class AppProperties {

    private String ip;
    private Integer port;

... getters and setters

我需要这些值的班级

@Component
public class Teste {

    @Autowired
    private AppProperties properties;

...
socket = new Socket(properties.getIp(), properties.getPort());

在调试时,在应用程序启动时,AppProperties中的值将获得正确的值。

3 个答案:

答案 0 :(得分:1)

您可以像这样使用@Value注释从application.properties文件访问属性值

@Value("${<propertname>}")
private String userBucketPath;

答案 1 :(得分:0)

您的代码看起来正确,但是我建议您也尝试以下步骤:

  1. 使用@PropertySource批注定义属性位置。 (我知道默认位置是类路径)。

  2. 如果确实需要向您的项目添加配置文件。创建一个新的应用程序属性文件,例如application- {profile-name} .properties,并在启动应用程序时传递JVM参数 -Dspring.profiles.active = {profile-name}

我不知道这确实是您的需要或答案。我只是想分享一个额外的步骤。

答案 2 :(得分:-1)

由于使用data实例化了Teste类,因此我获得了属性的空值

解决方案是将Teste类与Intection结合使用。

new Teste().