在Spring Boot应用程序中,我有一个如下类:
@Service
public class XYZ{
}
我想在其他ABC类中使用上面的
public class ABC{
@Autowired
private XYZ xyx;
}
抛出错误,找不到XYZ。我在编写main方法的类中已经有@SpringBootApplication了。因此,这将自动在包上启用@ComponentScan。 ABC在spring配置文件中创建为bean。我的理解是,由于XYZ已使用@service进行注释,因此spring扫描并创建并注册该bean。如何在不使用xml配置的情况下访问其他类中的bean?
答案 0 :(得分:1)
如何实例化ABC
? ABC
对象必须由Spring实例化。
换句话说,ABC
类也必须是某种@Component
。可以通过@SpringBootApplication
自动连接,或者对于Web应用程序,可以为@Controller
。
答案 1 :(得分:0)
除了上面的@Sharon Ben Asher
所说的:如果万一如果在测试执行过程中抛出了错误并且测试上下文使用了@SpringBootTest
以外的任何东西,那么就有机会该上下文不扫描@Service注释Bean。
例如,用@DataJpaTest
注释的测试类将不会扫描@Service
bean。它需要一个明确的@ComponentScan
来解析它。有关示例代码段的详细信息,请参见https://stackoverflow.com/a/52939210/5107365。