- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Spring Boot 自动配置最近在版本 2.7 中进行了更改,并且大多数设置在版本 3.0 中已弃用(您可以找到详细信息 here )。此外,他们还为自动配置类引入了新的注释,即 @AutoConfiguration
。我无法理解下面所述的注释的默认设置:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration(proxyBeanMethods = false)
@AutoConfigureBefore
@AutoConfigureAfter
public @interface AutoConfiguration {
}
为什么他们强制用户继承 proxyBeanMethods = false
、@AutoConfigureBefore
和 @AutoConfigureAfter
?
最佳答案
我们默认为 proxyBeanMethods=false
的原因是我们认为这是自动配置类最合理的默认值。这意味着启动应用程序时需要更少的处理时间。
假设您有这样的配置:
@Configuration(proxyBeanMethods=true)
class MyConfiguration {
@Bean
MyBean1 myBean1() {
return new MyBean1(myBean2());
}
@Bean
MyBean2 myBean2() {
return new MyBean2();
}
}
在这种情况下,Spring 必须动态创建 MyConfiguration
的 CGLIB 子类,以确保对 myBean2()
的任何调用实际上委托(delegate)给 BeanFactory
.
这意味着在应用程序启动时需要生成并加载额外的字节码。
如果重写配置如下:
@Configuration(proxyBeanMethods=false)
class MyConfiguration {
@Bean
MyBean1 myBean1(MyBean2 myBean2) {
return new MyBean1(myBean2);
}
@Bean
MyBean2 myBean2() {
return new MyBean2();
}
}
不仅节省了资源,而且代码更诚实地说明了它实际在做什么。
如果您确实想继续使用代理类,您可以继续使用@Configuration
。从 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件中的条目加载的类实际上不需要使用 @AutoConfiguration
进行注释。
关于spring - 为什么@AutoConfiguration使用proxyBeanMethods = false,@AutoConfigureBefore,@AutoConfigureAfter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76416798/
我有 3 个 spring-boot-starter 项目 其中一个自动配置类具有以下代码: @Configuration @ConditionalOnClass(value = Config.cla
Spring Boot 自动配置最近在版本 2.7 中进行了更改,并且大多数设置在版本 3.0 中已弃用(您可以找到详细信息 here )。此外,他们还为自动配置类引入了新的注释,即 @AutoCon
我是一名 python 开发人员,对 Spring boot 和 gradle 完全陌生。但是我对 Java 很满意,并尽我最大的努力使用 Kotlin。我试图在本地主机上运行 Spring Boot
总而言之: 此处复制项目:https://github.com/snussbaumer/zipkin-app-wont-start-repo 我想使用 Zipkin Kafka Sender 我还需要
我是一名优秀的程序员,十分优秀!