
1、组件扫描(Component Scanning)
组件扫描是 Spring Boot 中默认的 Bean 加载方式,它会自动扫描指定包及其子包,寻找带有 @Component 及其衍生注解(如 @Service、@Repository、@Controller)的类,并将其注册为 Spring Bean。
| |
| @Component |
| public class MyComponent { |
| |
| } |
| |
| |
| @Service |
| public class MyService { |
| |
| } |
2、XML 配置
虽然 Spring Boot 倾向于使用注解驱动的配置,但仍支持传统的 XML 配置方式。您可以通过 XML 文件定义 Bean,然后在 Spring Boot 主类中引入这些 XML 配置。
| @SpringBootApplication |
| @ImportResource("classpath:beans.xml") |
| public class MyApplication { |
| public static void main(String[] args) { |
| SpringApplication.run(MyApplication.class, args); |
| } |
| } |
3、Java 配置类
Spring Boot 支持使用 Java 配置类定义 Bean。您可以创建一个带有 @Configuration 注解的类,在其中使用 @Bean 注解定义 Bean。
| @Configuration |
| public class MyConfiguration { |
| @Bean |
| public MyBean myBean() { |
| return new MyBean(); |
| } |
| } |
4、条件化加载
有时,您可能只希望在特定条件下加载某些 Bean。Spring Boot 提供了条件化加载的方式,您可以使用 @Conditional 注解或实现 Condition 接口来定义加载条件。
| @Configuration |
| public class MyConfiguration { |
| @Bean |
| @Conditional(MyCondition.class) |
| public MyConditionalBean myConditionalBean() { |
| return new MyConditionalBean(); |
| } |
| } |
| public class MyCondition implements Condition { |
| @Override |
| public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { |
| |
| return true; |
| } |
| } |
5、外部配置
Spring Boot 允许您在 application.properties 或 application.yml 中配置 Bean 的属性,然后使用 @Value 注解注入这些属性值。
| |
| myBean.name=John |
| myBean.age=30 |
| @Component |
| public class MyBean { |
| @Value("${myBean.name}") |
| private String name; |
| |
| @Value("${myBean.age}") |
| private int age; |
| |
| |
| } |
6、自动配置
Spring Boot 自动配置是其独特的功能之一。它根据项目的依赖和配置,自动配置和加载适当的 Bean。例如,当您引入 Spring Data JPA 依赖时,Spring Boot 会自动配置 JPA 相关的 Bean,您无需手动创建它们。
7、使用第三方库自动配置
Spring Boot 也支持使用第三方库的自动配置。例如,如果您在项目中引入了 Spring Security,Spring Boot 会自动配置安全相关的 Bean。
| @SpringBootApplication |
| public class MyApplication { |
| public static void main(String[] args) { |
| SpringApplication.run(MyApplication.class, args); |
| } |
| } |
上述方式是 Spring Boot 中加载 Bean 的一些常见方式,您可以根据项目的需要选择合适的方式。通常,建议使用组件扫描和 Java 配置类来加载 Bean,因为它们更符合 Spring Boot 的设计理念,同时也提供了很大的灵活性和便捷性。不同的项目可能会采用不同的加载方式,这取决于项目的规模、复杂性和团队的偏好。最重要的是确保 Bean 的加载方式符合项目的需求和设计目标。