【问题标题】:if springboot can start from just one class, and inject just its depenecies如果 spring boot 只能从一个类开始,并且只注入它的依赖项
【发布时间】:2022-01-18 06:38:19
【问题描述】:

有时我只是在一个界面中调试一些错误(可能存在一些相关的类,一个@Controller类和几个@Service类),

@RestController
public class A  {

    @Autowired
    private B b;
    @Autowired
    private C c;
}

@Service
class B{
}

@Service
class C{
}

我需要启动 springboot 应用程序。但是当项目类增加时。它太慢了。我知道我可以使用 jrebel 等开发工具进行热部署。我只是想知道是否有任何方法让用户启动应用程序但使用一个特定的类。在这种情况下,我的意思是 A 类

【问题讨论】:

  • @SpringBootTest.
  • 这就是你应该编写单元测试的原因。只需编写一个实例化 A 类并模拟 B 和 C 的测试,这样您就可以检查它是否正常运行。对其他类执行相同操作。

标签: spring spring-boot spring-mvc


【解决方案1】:

解决这个问题的两种方法:

  1. 单元测试。为 A 类编写一个测试,在其中模拟 B 和 C 来测试你想要的。
  2. 如果你想要web层测试,你可以使用@SpringBootTest,这样你也可以模拟B和C,并运行api调用A并测试它。有很好的例子here

【讨论】:

  • 如果您只想要 Web 层测试,请使用 @WebMvcTest 而不是 @SpringBootTest。第一个专用于网络测试,只会开始,@SpringBootTest 将引导您的整个上下文。
  • 我上面列出的例子是一个简单的依赖关系图,实际上它有很多依赖关系。并且嘲笑每个依赖是不现实的。我想要的是在启动应用程序时,我可以指定一个 Web 层类(通过 env 或参数)。只有这个类的映射是活动的并且它的依赖是初始化的,其他网络层类是非活动的并且它们的依赖不是初始化的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-21
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多