gpt4 book ai didi

java - 当基于 xml 的 spring mvc 已经加载时,扫描新的手动添加的 Controller

转载 作者:行者123 更新时间:2023-12-01 21:53:46 25 4
gpt4 key购买 nike

我正在开发一个项目,我们使用 spring mvc 作为 Web 框架。它具有基于 xml 的配置并首先启动。而且我还有一些插件,可以在使用它时手动添加到我的项目中。每个插件都描述了一个 API 及其所有 @Controller-s 和模型。

我设法在我的 Spring 配置中注册这些 API(

AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();
ctx.register(classNames);
ctx.refresh();

), 但我怎样才能“唤醒”我的 Spring 并说请扫描所有这些 Controller 。

我有一个适用于所有 API 的 ExceptionHandler,这就是为什么我需要扫描所有 API 以将这些 Controller 与处理程序连接起来。

我已经尝试过了,但没有成功。

AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();
ctx.scan(packageName);
ctx.refresh();

执行过程中没有出现错误。

最佳答案

对定义了所有 API 的 Controller 类使用 @RestController 注释

@RestController
public class exampleController {

}

对其他组件类使用@Component注解

@Component
public class Validations {

}

您还可以对定义业务逻辑的业务层使用@Service注解,对访问数据库的类使用@Repository注解。

要启用上述注释,如果您使用“maven”构建项目,则需要添加下面提到的依赖项。否则将所有 jar 文件添加到与以下依赖项相关的项目

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

如果您需要处理异常,您需要使用 @ControllerAdvice 注释创建下面提到的类。您可以为每个异常处理特定的方法。 (示例:NullPointerException)

@ControllerAdvice
public class ExceptionHandler extends RuntimeException {

@Autowired
ResponceBuilder responseBuilder;

@JsonIgnore
private HttpStatus status = HttpStatus.OK;

public ExceptionHandler() {
super();
}

@org.springframework.web.bind.annotation.ExceptionHandler(Example.class)
public ResponseEntity<Response>
NullPointerException(NullPointerException e) {

log.info("Invalid Data: {}",e.getErrorMessage());
return new ResponseEntity<>(responseBuilder.build(e.getErrorCode(),
e.getErrorMessage()), status);
}

关于java - 当基于 xml 的 spring mvc 已经加载时,扫描新的手动添加的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58751178/

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