如何在Spring Boot应用程序的其他类中自动装配Bean?

时间:2018-11-02 13:18:47

标签: java spring spring-boot autowired

在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?

2 个答案:

答案 0 :(得分:1)

如何实例化ABCABC对象必须由Spring实例化。

换句话说,ABC类也必须是某种@Component。可以通过@SpringBootApplication自动连接,或者对于Web应用程序,可以为@Controller

答案 1 :(得分:0)

除了上面的@Sharon Ben Asher所说的:如果万一如果在测试执行过程中抛出了错误并且测试上下文使用了@SpringBootTest以外的任何东西,那么就有机会该上下文不扫描@Service注释Bean。

例如,用@DataJpaTest注释的测试类将不会扫描@Service bean。它需要一个明确的@ComponentScan来解析它。有关示例代码段的详细信息,请参见https://stackoverflow.com/a/52939210/5107365