@ComponentScan(basePackages=”包路径”)
是 Spring 框架的核心注解之一,它的主要作用是指示 Spring 容器(ApplicationContext)去哪些包路径下扫描带有特定注解的类,并将其自动注册为 Bean 定义,最终实例化为 Spring 容器管理的 Bean。
当你想让 Spring 容器管理并创建其他包中的类实例(Bean)时,可以在你的主配置类上使用 @ComponentScan(basePackages="其他包路径") 来声明需要扫描的包。之后,你就可以在你的主包(或任何被 Spring 管理的组件中)通过 @Autowired 依赖注入的方式,获取到其他包中的 Bean 实例,进而调用其方法。
默认扫描行为
例如,如果你的配置类 AppConfig 在 com.example.app 包中,那么 Spring 会自动扫描 com.example.app 以及 com.example.app.service, com.example.app.controller 等所有子包。
当你在一个配置类(即带有 @Configuration 注解的类)上使用 @ComponentScan 而不指定任何参数时,它会默认扫描这个配置类所在的包及其所有子包。
@CrossOrigin
@CrossOrigin 是一个 Spring Framework 提供的注解,用于在 Spring MVC 或 Spring WebFlux 应用中启用和配置跨源资源共享(CORS)。
它的核心目的是解决浏览器同源策略的限制,允许运行在不同源(域名、协议、端口)上的Web应用程序访问你的后端API。
为什么需要它?
想象一个常见的前后端分离场景:
- 前端应用:运行在
http://localhost:3000(React/Vue开发服务器) - 后端API:运行在
http://localhost:8080
即使它们在同一台机器上,端口不同也被浏览器视为不同的“源”。默认情况下,浏览器会阻止前端页面向后端API发起的 Ajax 请求(如 fetch 或 axios),并报出一个经典的 CORS 错误。
@CrossOrigin 注解的作用就是告诉浏览器:“这个后端接口允许来自某个源的前端页面进行访问”。


