英文:
Not able to access application.yml properties in springboot component
问题
以下是翻译好的部分:
我有一个 application.yml
文件,其中包含以下属性:
NAME:
CLASS:
ID: ABC123456
这是我的 Spring Boot 组件类:
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Component
@Slf4j
public class ProcessMe {
@Value("${NAME.CLASS.ID}")
String StuId;
public boolean IsRightOrWrong() {
System.out.println(StuId);
}
}
在上面的组件中,System.out.println(StuId);
总是显示为 null。当我尝试使用 Junit 测试类调用此函数时,上述代码有什么问题?
英文:
I have an application.yml
file which contains properties as below
NAME:
CLASS:
ID: ABC123456
and here is my spring boot component class
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Component
@Slf4j
public class ProcessMe {
@Value("${NAME.CLASS.ID}")
String StuId;
public boolean IsRightOrWrong(){
System.out.println(StuId);
}
}
In above componenent System.out.println(StuId);
is always coming as null. When i am tying to call this function using Junit test class. What's wrong in the above code?
答案1
得分: 1
我认为可以在构造函数中这样定义解决方案:
@Component
@Slf4j
public class ProcessMe {
String StuId;
@Autowired
ProcessMe(@Value("${NAME.CLASS.ID}") String StuId) {
this.StuId = StuId;
}
public boolean IsRightOrWrong(){
System.out.println(this.StuId);
}
}
希望有帮助
英文:
I suppose this solution to define in constructor like
@Component
@Slf4j
public class ProcessMe {
String StuId;
@Autowired
ProcessMe(@Value("${NAME.CLASS.ID}") String StuId) {
this.StuId = StuId;
}
public boolean IsRightOrWrong(){
System.out.println(this.StuId);
}
}
Hope useful
答案2
得分: 0
如果您能够启动该应用程序,那么我相信您的配置是正确的。我的意思是 StuId
有一些值。
问题是您如何测试 当我尝试使用 Junit 测试类调用此函数时。上面的代码有什么问题?
看起来您是从单元测试中调用的。那么您需要将 application.yaml 克隆到测试配置文件,这样您的测试容器才能读取数据,否则您需要模拟配置。
顺便说一下:Java 对象属性应该使用驼峰命名法 哈哈。
英文:
If you can start the application then I believe that your configuration is correct. I mean that StuId
have some value.
The problem is how you testing When i am tying to call this function using Junit test class. What's wrong in the above code?
It seems that you're calling from the unit test. Then you need to clone application.yaml to test profile then your test container can read data, otherwise you have to mock your configuration.
btw: Java Object property should using camel case lol
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论