当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Boot应用程序中自动连接其他类中的bean?

乐正峰
2023-03-14

在Spring Boot应用程序中,我有一个类如下:

@Service
public class XYZ{
}

我想在其他类ABC中使用上述内容,如:

public class ABC{

    @Autowired
    private XYZ xyx;

}

它抛出找不到XYZ的错误。在编写主方法的类中,我已经有@SpringBootApplication。因此,这将自动在包上启用@ComponentScan。ABC在spring配置文件中创建为bean。我的理解是,由于XYZ是用@service注释的,所以spring会扫描、创建并注册该bean。如何在不使用xml配置的情况下访问其他类中的bean?

共有2个答案

闻人嘉悦
2023-03-14

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

例如,用@DataJpaTest注释的测试类不会扫描@Servicebean;它需要显式的@ComponentScan来解析它。有关示例代码段的详细信息可以在此处找到https://stackoverflow.com/a/52939210/5107365.

松英喆
2023-03-14

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

换句话说,ABC类也必须是某种@组件。它可以由@springbootplication自动连接,或者在web应用程序的情况下,它可以是@Controller

 类似资料:
  • 问题内容: 我认为在理解OOP的工作方式方面存在问题。我已经更改了它可以工作的代码,但这不是我认为的正确方法。以下情况(不,我不是自己创建用户登录,实际上只是为了让本地开发人员更好地理解OOP): 我有一个database.php文件: 因此,在此类中,我正在创建数据库连接,然后返回连接(对象?) 然后,我有第二个类,著名的User类(实际上,我没有使用自动加载功能,但是我知道): 那是我的两堂课

  • 我想我在理解OOP是如何工作的方面遇到了一个问题。我已经改变了它的工作代码,但它不是我认为的支持方式。下面的场景(不,我不是自己创建一个用户登录,它实际上只是为了让本地开发人员更好地理解OOP): 我有一个database.php文件: 因此,在这个类中,我创建了一个数据库连接,并返回该连接(对象?) 然后我有第二个类,著名的User类(其实我没有在使用autoload,但我知道它): 这是我的两

  • 我想我在理解OOP是如何工作的方面遇到了一个问题。我已经改变了它的工作代码,但它不是我认为的支持方式。下面的场景(不,我不是自己创建一个用户登录,它实际上只是为了让本地开发人员更好地理解OOP): 我有一个database.php文件: 因此,在这个类中,我创建了一个数据库连接,并返回该连接(对象?) 然后我有第二个类,著名的User类(其实我没有在使用autoload,但我知道它): 这是我的两

  • 我想直接从我的应用程序运行另一个应用程序(Polaris Office)。但它也应该直接打开PDF文件。 我尝试了以下代码: 知道我该怎么做吗?我当前的代码给出了错误消息: 原因:java。lang.SecurityException:权限拒绝:启动Intent{act=android.Intent.action.MAIN dat=file:///mnt/sdcard/pdf.pdftyp=app

  • 我有一个应用类 我有控制器课 并且,我想为Application test编写一个测试用例,以确保创建的实例类型为HelloController 但是,我在自动连接 hello控制器变量时遇到错误(找不到 hello 控制器类型的 bean)。根据我的理解,@SpringBootTest应该创建上下文并返回一个实例。我们不需要编写任何上下文 xml 或使用任何注释Config 类来获取实例。缺少了