当前位置: 首页 > 面试题库 >

EnableAutoConfiguration弹簧注释如何工作?

公良俊楚
2023-03-14
问题内容

我不喜欢抽象,但 我认为Spring犯了重罪。

但是,如果有人可以解释“自动”配置背后的算法,那么我这次愿意忽略它。

看看spring自己的javadocs,除了说它将智能地猜测您需要的东西以及对条件bean要做的事情之外,它没有什么其他的。

有人知道用于确定需要加载哪些算法的算法吗?


问题答案:

根据我作为Spring Boot用户的经验,Spring Boot决定要启用哪些自动配置的基本因素是:

1)存在于类路径中的类。例如,如果存在RabbitMQ和Spring
AMQP类,则将RabbitAutoConfiguration启用。相应的注释是@ConditionalOnClass

2)是否存在用户定义的bean。例如,如果所有Spring Data JPA都存在于类路径中,则Spring
Boot将LocalContainerEntityManagerFactoryBean仅在用户尚未注册Bean的情况下对其进行注册。用户注册的bean将“覆盖”默认的bean。相关的注释是@ConditionalOnMissingBean

正如@DaveSyer提到的,@EnableAutoConfiguration如果您不希望自己包含相关配置,那么当然可以使用Spring Boot
。或者,您可以使用exclude领域不太激烈的解决方案@EnableAutoConfiguration。例如,如果您希望Spring
Boot自动配置除ActiveMQ之外的所有内容,则可以使用@EnableAutoConfiguration(exclude=ActiveMQAutoConfiguration.class)

我认为这里绝对没有重罪!您可以使用Spring Boot中想要的东西。如果您不想提供某些功能,则可以轻松选择部分或全部退出!

另外,如果您想在幕后看一下,则可以添加该属性

logging.level.org.springframework.boot=DEBUG

application.properties春季启动会很乐意给的是什么自动配置的详细报告,什么不是



 类似资料:
  • 11.3.2 @EnableAutoConfiguration注解 第二个类级别的注解是@EnableAutoConfiguration。此注解告诉Spring Boot根据您已添加的jar依赖去“猜测”您想如何配置Spring。由于spring-boot-starter-web添加了Tomcat和Spring MVC,自动配置会假设您正在开发Web应用并相应地设置Spring。 启动器和自动配置

  • 问题内容: 从JSON请求主体创建POJO时,对POJO字段进行注释的Spring验证会起作用。但是,当我手动(使用设置器)创建同一对象并想要触发验证时,我不确定该怎么做。 这是Registration类,它具有可以构建对象的Builder内部类。在构建方法中,我想触发弹簧验证。请滚动到底部并检查Builder.build()和Builder.valiate()方法以查看当前的实现。我正在使用ja

  • 问题内容: 我到处都读到有关Spring如何鼓励您在代码中使用接口的信息。我没看到 您的spring xml配置中没有接口的概念。Spring的哪一部分实际上鼓励您使用接口(而不是文档)? 问题答案: 为类定义接口时,它有助于进行依赖项注入。您的Spring配置文件本身不包含任何有关接口的信息-您只需输入类的名称即可。 但是,如果您要注入另一个提供“等效”功能的类,则使用接口确实会有所帮助。 例如

  • 问题内容: 我处理遗留代码库,其中未在春天有线了一类需要获得一类 是 在春季接线。我希望创建一个在启动时已连接的工厂类,然后可以调用getInstance()方法来获取一个连接对象。最好的方法是什么? 例: 我需要在启动时连接FooFactory,以便LegacyA可以简单地调用getInstance(),以便它返回Foo的实例(这也是在应用程序上下文中定义的bean)。 编辑:我不得不重新整理我

  • 所以我知道通过这个注释: 此方法处理对URL/Orders表示的资源发出的GET HTTP请求。 此方法调用返回列表的DAO对象。 确保结果将由HTTP消息转换器(而不是MVC视图)写入HTTP响应。 也可以阅读Spring官方文档:http://docs.Spring.io/Spring/docs/current/javadoc-api/org/springframework/web/bind/

  • 问题内容: 我有一个Web应用程序,这里有一个典型的问题,即针对不同环境需要不同的配置文件。某些配置作为JNDI数据源放置在应用程序服务器中,但是某些配置保留在属性文件中。 因此,我想使用Spring配置文件功能。 我的问题是我没有运行测试用例。 context.xml: 测试: 问题似乎是无法解析用于加载配置文件的变量: 当前配置文件应使用注释设置。由于这是一个测试用例,因此我将无法使用。如果可