使用Java中的Spring属性和CrossOrigin注释或Spring-Config XML

时间:2017-11-30 13:19:37

标签: java spring spring-mvc spring-security annotations

我在Spring中使用CrossOrigin注释。 现在我想将一个Property作为值注入注释。我不接受这个工作。

现在我这样访问我的财产:

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

我想将此属性注入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-origin中手动设置IP地址时,它正在工作。设置有问题......

appsettings.properties:

test=http://192.168.1.200

编辑2:

S O L V E D

经过一段时间的故障排除后,我现在为我解决了这个问题:-) 现在我再次使用注释@CrossOrigin。我必须将 RequestMethod Options 添加到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()
  {

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

您可以尝试直接在origins参数

中访问该属性
@CrossOrigin(origins = @Value("${settings.cors_origin}"))