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

Spring:@bean没有@configuration仍然可以工作

龙珂
2023-03-14

从https://projects.spring.io/spring-framework/,我有一个spring framework hellpworld程序。我删除了注释@configuration。然而,程序仍然可以像以前一样运行。为什么?这里的@configuration角色是什么?

共有1个答案

裴俊智
2023-03-14

您仍然可以用@component标记类,以使@bean实例可用于编程。当你这样做的时候,它被称为lite模式。在这种模式下,您不能使用“inter-bean references”,这意味着通过方法引用其他实例。

另一方面,@bean with class@configuration被包装在side cglib包装器中,可以拦截对此bean方法的任何调用,并从上下文返回bean实例。意味着您可以使用“bean间引用”。

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/bean.html

    null
    null

容器将lite模式中的Bean方法视为普通工厂方法(类似于XML中的工厂方法声明),并适当应用范围和生命周期回调。在这种情况下,包含类保持不变,并且对于包含类或工厂方法没有异常的约束。

与@Configuration类中bean方法的语义不同,lite模式不支持“bean间引用”。相反,当一个@bean-method在lite模式下调用另一个@bean-method时,该调用是标准的Java方法调用;Spring不会通过CGLIB代理拦截调用。

并且,@Configuration使您能够结合其他注释使用许多其他特性

资源导入@PropertySource(“classpath:config.properties”)

启用组件扫描@ComponentScan(basePackages={“com.sample.*”})

标记profile@profile(“Production”)

 类似资料:
  • 问题内容: 在Spring 3.0中有一个注释。它允许直接在Java代码中定义Spring bean。在浏览Spring参考时,我发现了使用此批注的两种不同方法-带注释的内部类和没有此注释的内部类。 本节包含以下代码: 在这里我们可以看到一段非常相似的代码,但是现在就在这里: 参考的前一部分包含以下说明: Spring组件中的@Bean方法的处理方式与Spring @Configuration类中

  • 问题内容: 我已经在Ubuntu桌面上安装了go,在关闭计算机之前,它运行良好。 现在,当我启动机器并恢复该项目的工作时,我得到了 当我尝试构建项目时。 我在关闭电源之前所做的唯一可能会产生影响的事情是使用以下命令安装godoc 我已经通过下载文件而不是使用直接安装了 去环境 $ go版本 我仍然可以运行编译后的go代码。 这里可能出了什么问题?我该如何解决? 问题答案: 该程序应该在您的 目录中

  • 我正试图从我的应用程序发送一条带有JMS的消息。 我加入我的pom Spring开始了说 JmsTemboard和ConnectionFactory是由Spring Boot自动创建的。在这种情况下,ActiveMQ代理运行嵌入式。 在我的批处理程序中 但是找不到bean JmsTemplate 没有“org”类型的合格bean。springframework。jms。果心JmsTemplate'

  • 我正试图将eclipse中的java项目导出为可运行的jar,但由于某种原因,可运行的jar无法工作。如果双击可执行jar,它什么也不做。我尝试将所需库提取并打包到生成的JAR中。 所以我也尝试导出一些更简单的项目,那些工作很好。最大的区别是我的真实项目有文件:图像和xml文件。 在代码中引用它们,如下所示:

  • 我有一个应用程序正在使用“插件应用程序”(没有启动器图标的应用程序,由主应用程序通过intent启动),我想让这个应用程序的Play Store“Open”按钮只打开主应用程序。 是否有一种方法可以不使用启动器图标,而是定义一个入口点,以便在play store安装后启动主应用程序(通过意图或启动一个虚拟活动,该活动将立即启动其他应用程序活动)。 我考虑删除启动器类别“android.intent

  • 我正试图为我的主要活动编写一个仪器测试。我遵循了这里给出的答案。但是Android Studio找不到任何测试。我在androidTest文件夹中有applicationTest.java类。以下是这堂课的内容: 这个测试类出了什么问题?还是测试?我没有得到任何错误,它只是没有找到任何测试运行。运行ApplicationTest后,输出以以下行结束: 以下是该应用程序的build.gradle文件