![](/img/trans.png)
[英]How can I pass a value from application.properties in @Scope and @Collection annotations?
[英]How can I pass properties placeholder to annotations from YAML config file?
我想將配置屬性從YAML文件傳遞給注釋值,例如: @SendTo(value = "${config.ws.topic}")
,但出現錯誤
無法解析占位符config.ws.topic等。
我的代碼:
@MessageMapping("/chat.register")
@SendTo("${config.websocket.topic}")
public Message addUser(@Payload Message message,
SimpMessageHeaderAccessor headerAccessor) {
headerAccessor.getSessionAttributes().put("username", message.getSender());
return message;
}
道具文件:
server:
address: 127.0.0.1
port: 8080
config:
websocket:
endpoint: /ns/ws/endpoint
appPrefix: /ns/ws
topic: /ns/ws/ns-topic
道具配置類:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(value = "config.websocket")
public class WebSocketConfigurationProperties {
private String endpoint;
private String appPrefix;
private String topic;
public String getEndpoint() {
return endpoint;
}
public void setEndpoint(String endpoint) {
this.endpoint = endpoint;
}
public String getAppPrefix() {
return appPrefix;
}
public void setAppPrefix(String appPrefix) {
this.appPrefix = appPrefix;
}
public String getTopic() {
return topic;
}
public void setTopic(String topic) {
this.topic = topic;
}
}
您能建議我如何將配置屬性傳遞給注釋@SendTo
嗎?
如果您嘗試將值從application.yml映射到配置類,則可以簡單地使用@Value
來實現此目的。
在您的控制器中,只需創建變量即可保存來自application.yml
的信息,如下所示
@Value("${config.ws.topic}")
String topic;
您的控制器將如下所示
@MessageMapping("/chat.register")
@SendTo(topic)
public Message addUser(@Payload Message message,
SimpMessageHeaderAccessor headerAccessor) {
headerAccessor.getSessionAttributes().put("username", message.getSender());
return message;
}
編輯1:由於以下錯誤, 屬性值必須恆定 ,可以解決此問題。
@Value("${config.ws.topic}")
String topic;
public static final String TOPIC_VALUE = "" + topic;
您的控制器將如下所示
@MessageMapping("/chat.register")
@SendTo(TOPIC_VALUE)
public Message addUser(@Payload Message message,
SimpMessageHeaderAccessor headerAccessor) {
headerAccessor.getSessionAttributes().put("username", message.getSender());
return message;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.