springboot自动装配

2023-04-25 10:04:59 浏览数 (1)

自动装配

概念

Spring Boot 自动装配是一种便捷的功能,它可以自动发现和配置项目中的 bean,从而简化 Spring 应用程序的配置。自动装配的目标是让开发者能够专注于业务逻辑,而不需要花费大量时间手动配置各种组件、服务和数据源

作用

  1. 简化配置:自动装配可以自动发现和配置项目中的 bean,减少了手动配置组件、服务和数据源的工作量。这使得开发者可以专注于业务逻辑,而不需要花费大量时间在繁琐的配置上。
  2. 提高开发效率:自动装配功能使得开发者可以快速构建和部署应用程序。通过自动配置项目中的组件,开发者可以更快地进行迭代和测试,从而提高整体

具体步骤

首先加载核心注解@SpringBootApplication

代码语言:javascript复制
package com.it.myservice;
​
​
import com.it.myservice.service.MyService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
public class AutomaticDemoApplication {
​
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(AutomaticDemoApplication.class, args);
        MyService myService = context.getBean(MyService.class);
        System.out.println(1 myServi
        ce.getMessage());
    }
​
}
​

2.Spring Boot 读取 spring.factories 文件

在 src/main/resources/META-INF 目录下创建 spring.factories 文件,以便 Spring Boot 能够发现自动装配类

代码语言:javascript复制
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.it.myservice.config.MyServiceAutoConfiguration

3.创建一个 MyServiceAutoConfiguration 类,用于自动装配 MyService

代码语言:javascript复制
package com.it.myservice.config;
​
​
import com.it.myservice.service.MyService;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
​
@Configuration  @EnableConfigurationProperties(MyServiceProperties.class)
public class MyServiceAutoConfiguration {  
    @Bean
    @ConditionalOnMissingBean
    public MyService myService(MyServiceProperties properties) {
        return new MyService(properties.getMessage());
    }
}

4.创建一个 MyServiceProperties 类,用于绑定配置属性

代码语言:javascript复制
package com.example.myservice;
​
import org.springframework.boot.context.properties.ConfigurationProperties;
​
@ConfigurationProperties(prefix = "myservice")
public class MyServiceProperties {
    private String message = "Default message";
​
    public String getMessage() {
        return message;
    }
​
    public void setMessage(String message) {
        this.message = message;
    }
}

5.创建一个简单的 MyService 类

代码语言:javascript复制
package com.example.myservice;
​
public class MyService {
    private String message;
​
    public MyService(String message) {
        this.message = message;
    }
​
    public String getMessage() {
        return message;
    }
}
​

详细步骤

代码语言:javascript复制
  1.Spring Boot 在启动时扫描项目中的类和包,发现 MyServiceAutoConfiguration 类。
  2.Spring Boot 读取 spring.factories 文件,找到 MyServiceAutoConfiguration 类作为自动装配类。
  3. MyServiceAutoConfiguration 类使用 @EnableConfigurationProperties 注解
  启用 MyServiceProperties 类的配置属性绑定。
  4.MyServiceProperties 类使用 @ConfigurationProperties 注解
  将 application.properties 文件中的 myservice.message 属性绑定到 message 字段。
  5.MyServiceAutoConfiguration 类中的 myService() 方法
  使用 @Bean 和 @ConditionalOnMissingBean 注解定义了一个 MyService 类型的 bean。
  当没有其他 MyService bean 时,Spring Boot 会自动装配这个 bean。
  6.MyService bean 使用 MyServiceProperties 类中的 message 属性值进行初始化。

0 人点赞