原创

springboot自动装配原理

温馨提示:
本文最后更新于 2026年04月03日,已超过 71 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

Spring自动装配原理

spring自动装配是指Spring框架在上下文中自动查找ving装配与Bean相关的属性,从而简化开发者的工作。自动装配有2中方式:

  • XML配置文件
  • 注解

通过XML文件实现自动装配

在XML配置文件中,可以通过<bean>标签中加入autowired属性来实现自动装配。

autowired属性有几种可选值。如 ByName和byType

byName:Spring会根据类中的setter方法名称在配置文件中查找相同没名次的bean,并注入到属性中。

byType:Spring会自动寻找与属性相同的Bean,并注入到属性中

<bean id="people" class="com.example.People" autowire="byName">
   <property name="name" value="张三"/>
</bean>

通过注解实现自动装配

注解方式通过反射机制实现,主要使用autowired注解。在使用注解前,需要在XML中启用注解支持

<context:annotation-config/>

然后在实体类的属性上添加 autowired注解

public class People {
   @Autowired
   private Cat cat;
   @Autowired
   private Dog dog;
   private String name;
   // getter and setter methods
}

重点

属性类型优先:

Spring会优先根据属性类型在容器中查找对应的组件,找到后赋值。如果找到多个相同类型的组件,在根据名称查找。

@Qualifier注解:

可以与@Autowired搭配使用,指定需要装配的组件ID,而不是使用属性名

public class People {
    @Autowired
    @Qualifier("cat")
    private Cat cat;
}

@Autowired(required=false):当找不到匹配的Bean时,不会抛出异常

Spring Boot自动装配原理

Spring Boot自动装配基于Spring Framework的核心原理,即依赖注入和控制反转。Spring Boot通过classpath中的类和jar包,自动配置Spring应用程序所需的组件。

核心注解

@EnableAutoConfiguration:启用自动配置功能

@SpringBootApplication:是一个组合注解,包含@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan

自动配置类

spring Boot通过读取META-INF/spring.factories文件中的配置类,并根据条件注解决定是否将其导入到Spring中

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
   String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
   Class<?>[] exclude() default {};
   String[] excludeName() default {};
}

条件注解:

Spring Boot使用多种条件注解来控制配置类的加载,如@ConditionalOnClass、@ConditionalOnMissingBean等


总结:Spring自动配置通过XML配置和注解两种方式实现,而Spring Boot进一步简化了自动配置过程,通过核心注解实现按需加载,提高了开发效率



正文到此结束