gpt4 book ai didi

java - 在带有 CrossOrigin 注释的 Java 中或在 Spring-Config XML 中使用 Spring Properties

转载 作者:搜寻专家 更新时间:2023-10-31 20:17:15 24 4
gpt4 key购买 nike

我在 Spring 中使用了 CrossOrigin 注解。现在我想注入(inject)一个属性作为注释的值。我没有让它工作。

现在我像这样访问我的属性(property):

@Value("${settings.cors_origin}")
String cors_origin;

我想将此属性注入(inject) CrossOrigin 注释:

....
@CrossOrigin(origins = cors_origin)
@RequestMapping(value="/request", method= RequestMethod.GET, produces = "application/json")
public ResponseEntity<?> getMethod()
{
...

我已经尝试过这样的事情了:

@CrossOrigin(origins = "${settings.cors_origin}")

编辑 1:

现在我尝试在我的 spring 配置中全局设置 CORS-Header:

  <context:property-placeholder location="classpath*:*appsettings.properties"/>

<mvc:cors>
<mvc:mapping path="/api/**"
allowed-origins="${test}"
allowed-methods="GET, PUT, OPTIONS, POST"/>
</mvc:cors>

这个设置也不行!允许的来源与属性文件中指定的来源不同。我认为它不会将变量转换为值?当我在 spring config allowed-origins 中手动设置 IP 地址时,它正在工作。设置有问题...

appsettings.properties:

test=http://192.168.1.200

编辑 2:

解决问题

经过一段时间的故障排除后,我现在为我解决了它:-)现在我再次使用注释@CrossOrigin。我必须将 RequestMethod 选项 添加到 Spring RequestMapping:

 @RestController
@CrossOrigin(origins = {"${settings.cors_origin}"})
@RequestMapping("/api/v1")
public class MainController {


@RequestMapping(value="/request", method = {RequestMethod.GET, RequestMethod.OPTIONS}, produces = "application/json")
public ResponseEntity<?> getMethod()
{

感谢您的帮助!

最佳答案

您需要将字符串数组传递给 @CrossOrigin 注释的 origins 参数。这是用花括号完成的:

@CrossOrigin(origins = {"${settings.cors_origin}"})

然后在 Spring 中,src/main/resources/application.properties:

settings.cors_origin:http://localhost:4200

请注意,不要在 application.properties 中的键值对右侧包含注释或额外空格。值后的多余空格可能会导致键值对读取错误。

关于java - 在带有 CrossOrigin 注释的 Java 中或在 Spring-Config XML 中使用 Spring Properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47574480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com