- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有外部配置的 Maven Spring Boot 应用程序。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
我有一个带有@PropertySource
注释的配置类,它同时使用@Value
和Environment
:
@Configuration
@PropertySource("file:/etc/koshka/application.properties")
public class Config
{
@Autowired
private Environment env;
@Bean
public static PropertySourcesPlaceholderConfigurer configurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@Value("${socmess.pass}")
private String pass;
public String getUser() {
return env.getProperty("socmess.user");
}
public String getPass() {
return pass;
}
}
简而言之,我只需要 @Value
,但我也测试了 Environment
选项。
我在适当的文件夹中有配置文件:
$ cat /etc/koshka/application.properties
socmess.user="testuser"
socmess.pass="testpass"
在 Controller 中我正在实例化配置:
@RestController
public class Sender {
private final Logger logger;
public Sender()
{
logger = (Logger)LogManager.getLogger("KoshkaBot");
}
@GetMapping("/vk")
@CrossOrigin(origins = "*")
public ResponseEntity<String> vk(
@RequestParam(value="username") String username,
@RequestParam(value="password") String password
) {
Config conf = new Config();
logger.info(conf.getUser());
logger.info(conf.getPass());
return ResponseEntity.ok().body("OK");
}
}
不幸的是,我在日志中看到null
。
最佳答案
不要创建new Config()
对象。这个由 spring 容器管理,因此您最多应该注入(inject)它。
回顾
Spring 是依赖注入(inject)框架,这意味着如果您需要一些依赖项,它是由容器提供给您的,您不应该创建它。这些依赖项通常是 spring bean,即 spring 知道如何创建和管理的对象。
返回我们@Configuration 是 Spring 用于通过 @Bean 注释来定义 bean 的注释,稍后其他组件可以使用 @Inject 注释来使用该注释。我要做的就是定义一个 pojo,如下所示:
public class User(){
private String username;
private String password;
//getters,setters etc ...
}
然后在 Config
类中定义 bean,如下所示:
@Bean
public User getUser(){
//..load user and password
return new User(user, password);
}
最后,当您需要使用用户时,您可以执行以下操作:
@Inject User user;
//now the properties will be not-null
关于java - 带有空@Value的@Configuration类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50039635/
我有一个名为 FeedView 的 View ,由 FeedViewController 处理。 我还有一个名为“NearestStore”的 XIB,它由一个名为“NearestStoreViewC
我有一个警报表,其中 tr 元素是使用 JS 动态添加/删除的。问题是它有一个 border-top 将它与上面的内容分开,当表格为空时我想隐藏这些内容。我试过 :empty 和 display:no
我是一名优秀的程序员,十分优秀!