如何停止重复打印JSR-330 'javax.inject.Inject'自动装配支持日志?
解决Spring应用重复打印JSR-330注入日志的方法
核心原因
该日志由Spring的AutowiredAnnotationBeanPostProcessor类输出,当它检测到JSR-330的@Inject注解时会打印INFO级提示,而你的应用中每次HTTP请求都会触发Bean的创建/初始化流程,导致日志重复生成。
具体解决步骤
方法1:调整日志级别(推荐)
修改日志配置文件(如log4j.properties、logback.xml),将org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor的日志级别从INFO上调至WARN或ERROR,直接屏蔽这类重复提示。
Log4j 1.x 配置示例
log4j.logger.org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor=WARN
Logback 配置示例
<logger name="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" level="WARN" />
方法2:禁用JSR-330注解支持(谨慎使用)
若你的应用完全不需要使用@Inject注解,可以通过Spring配置显式关闭该注解的自动装配检测:
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"> <property name="injectAnnotationType" value="java.lang.Object"/> </bean>
注意:此操作会让Spring不再识别@Inject注解,若代码中存在该注解的使用,会导致依赖注入失败,仅确认无相关依赖时使用。
方法3:优化Bean作用域(根源优化)
日志按HTTP请求线程打印,说明每次请求都会生成新的Bean实例。若对应Bean为无状态类型,建议将其作用域从prototype改为Spring默认的singleton,减少重复初始化操作:
<bean id="yourTargetBean" class="com.yourpackage.YourBeanClass" scope="singleton"/>
内容的提问来源于stack exchange,提问作者Jayanta Pramanik
相关产品推荐
相关产品推荐

