我使用最新的Spring Boot(1.2.7.RELEASE)。我想使用包org.springframework.web.bind.annotation
中的@CrossOrigin
注释,如Spring文档中的CORS Support部分所述。
我认为我已经拥有所有必需的依赖项(通过Spring Boot默认值),但这很令人困惑:找不到CrossOrigin
,即使来自同一个包的RestController
之类的东西也是如此作品!
Error:(8, 47) java: cannot find symbol
symbol: class CrossOrigin
location: package org.springframework.web.bind.annotation
发生了什么?是否已从更高版本的Spring-MVC中删除CrossOrigin
,或者我是否遗漏了某些依赖项?
的pom.xml:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.7.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
答案 0 :(得分:5)
好吧,看起来最新的Spring Boot版本1.2.7.RELEASE
目前还太老了,不能拥有带有CrossOrigin
的Spring MVC版本。 (Spring Boot 1.2.7 uses Spring version 4.1.8)。
我更新到最新的Spring Boot 1.3候选版本(1.3.0.RC1
)并且它可以工作:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.0.RC1</version>
</parent>
还需要在spring-milestones
中指定pom.xml
存储库才能使用非发布版本。
<repositories>
<repository>
<id>spring-milestones</id>
<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>
正如StéphaneNicoll指出的那样,使用Spring 4.2.2类(例如CrossOrigin
)的一种更简单的方法是:
<properties>
<!-- ... -->
<spring.version>4.2.2.RELEASE</spring.version>
</properties>
答案 1 :(得分:0)
@CrossOrigin注释用于为跨域提供支持,
即只有来自不同领域的东西,我们也可以访问该服务
默认情况下是真的。
我们也可以从跨域访问服务。