我在Spring Boot(1.5.9)中有一个项目。我在src / main / resources中的application.properties和外部application.properties中具有属性。我也可以通过命令行提供值。
我的主要班级是这样的:
@SpringBootApplication
@SpringBootConfiguration
@EnableJpaRepositories
@EnableEncryptableProperties
@Import(RepositoryRestMvcAutoConfiguration.class)
public class Application {
public Application() { super(); }
public static void main(String[] args) {
final SpringApplication app = new SpringApplication(Application.class);
app.run(args);
}
}
我有一个不同的类,看起来像这样:
@Component
public class MyAuthenticationProvider extends AuthenticationProviderInterface {
@Value("${myproject.authentication.url:https://blah:8443}")
private String authenticationURL = "https://test.blah:8443";
@Override
public void afterPropertiesSet() {
System.err.println(authenticationURL);
}
..... other stuff.....
}
从System.err中,我得到https://test.blah:8443。
现在,我可以获取所有主要变量:spring.main.banner-mode,spring.datasource.name等。我似乎无法获取自定义变量-myproject.authentication.url或myproject.authentication.accessstring。
spring变量的行为符合预期-我可以从属性文件到命令行遵循优先级。只有自定义变量才适合我。
有人有什么建议吗?我正在尝试提供良好的信息,但是我在两台未连接的计算机之间进行输入,偶尔会遇到输入错误。
谢谢。
答案 0 :(得分:0)
将@Comopnent
更改为@Component
。
答案 1 :(得分:0)
好。这真是愚蠢,Eclipse再次“帮助”了我。保存操作添加了一个“最终”值,并且(毫不奇怪)这些值没有被更新。很抱歉浪费人们的时间。