我无法在spring-boot应用程序中获得属性的值

时间:2016-10-02 17:16:20

标签: java spring-boot

我在spring-boot中编码。我试图在其他包中获取properties.properties的值但没有成功。例如,在classe ClassUtils.java中,testValue的值始终为null

这是我的项目

enter image description here

这是我的代码:

package com.plugins.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.plugins.domain.ClassUtils;

@RestController
public class SearchContactController {
    @Value("${environnement.test}")
    String testValue;

    @Value("${environnement.url}")
    String urlValue;

    @RequestMapping(value = "/test")
    public String pingRequest() {
        System.out.println("value ===> " + testValue + " /// " + urlValue);

        return "test !" + ClassUtils.getTestValue(); 
    }

}

这是我的第二堂课,我无法获得testValue变量的值:

package com.plugins.domain;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class ClassUtils {

    @Value("${environnement.test}")
    static String testValue;


    public static String getTestValue(){
        return "The return "+testValue;    
    }
}

这是我的springApp.java

package com.plugins;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootVideApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootVideApplication.class, args);
    }
}

2 个答案:

答案 0 :(得分:1)

在应用程序中启用@ComponentScan({" com.plugins"})

访问 application.properties

中定义的属性
myapp.url="xxxxxx"
你班上的

@Value("${myapp.url}")
private   String testValue;

但是这不能是一个静态变量,如果它是一个静态变量你通过定义setter方法来做这样的hack

private static String testValue;

@Value("${myapp.url}")
public void testValue(String value) {
            testValue = value;
}

答案 1 :(得分:1)

我在类中使用addin @Autowired解决了这个问题,该类使用了另一个类的方法,这是一个片段

 // Class: SearchContactController.java  
@Autowired
    ClassUtils cd;

    @RequestMapping(value = "/ping")
    public String pingRequest() {
        return "Ping OK !" + cd.getTestValue();
    }