此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Framework 6.2.10! |
@Controller
您可以使用标准 Spring Bean 定义来定义控制器 Bean。
这@Controller
stereotype 允许自动检测,并与 Spring 一般支持保持一致
用于检测@Component
类路径中的类和自动注册 Bean 定义
为了他们。它还充当带注释类的刻板印象,表明它的角色是
一个 Web 组件。
启用此类自动检测@Controller
bean,您可以将组件扫描添加到
您的 Java 配置,如以下示例所示:
-
Java
-
Kotlin
@Configuration
@ComponentScan("org.example.web") (1)
public class WebConfiguration {
// ...
}
1 | 扫描org.example.web 包。 |
@Configuration
@ComponentScan("org.example.web") (1)
class WebConfiguration {
// ...
}
1 | 扫描org.example.web 包。 |
@RestController
是一个组合的注释,即
本身用元注释@Controller
和@ResponseBody
,表示控制器的
每个方法都继承类型级@ResponseBody
注释,因此,写
直接到响应正文,而不是使用 HTML 模板进行视图分辨率和渲染。
AOP 代理
在某些情况下,您可能需要在运行时使用 AOP 代理修饰控制器。
一个例子是,如果您选择拥有@Transactional
注释直接在
控制器。在这种情况下,特别是对于控制器,我们建议
使用基于类的代理。此类注释自动出现这种情况
直接在控制器上。
如果控制器实现了一个接口,并且需要 AOP 代理,您可能需要
显式配置基于类的代理。例如,使用@EnableTransactionManagement
您可以更改为@EnableTransactionManagement(proxyTargetClass = true)
,并使用<tx:annotation-driven/>
您可以更改为<tx:annotation-driven proxy-target-class="true"/>
.
请记住,从 6.0 开始,使用接口代理,Spring WebFlux 不再检测
仅基于类型级的控制器@RequestMapping 界面上的注释。
请启用基于类的代理,否则接口还必须具有@Controller 注解。 |