springboot手動封裝一個starter

準備要封裝的組件

    <groupId>com.itpsc</groupId>
    <artifactId>com-itpsc-service</artifactId>
    <version>1.0</version>

裏面定義一個簡單的類

public class UserService {
    private String username;
    private String password;

    public void print() {
        System.out.println("username=" + username + " password=" + password);
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

mvn clean install發佈到本地倉庫。

新建一個starter

引入依賴

    <groupId>com.itpsc.spring.boot</groupId>
    <artifactId>itpsc-spring-boot-starter</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>2.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <version>2.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.itpsc</groupId>
            <artifactId>com-itpsc-service</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>

編寫讀取配置類

下面的類用於讀取yml或者properties中的配置信息

@ConfigurationProperties(prefix = "com.itpsc")
public class UserProperties {
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

使配置生效,並創建需要使用的bean

@Configuration
@EnableConfigurationProperties(UserProperties.class)
public class UserAutoConfiguration {
    @Bean
    public UserService getBean(UserProperties userProperties) {
        UserService userService = new UserService();
        userService.setUsername(userProperties.getUsername());
        userService.setPassword(userProperties.getPassword());
        return userService;
    }
}

自動裝配

在resources目錄下新建目錄META-INF,在META-INF下新建文件spring.factories,該文件中添加如下內容。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.itpsc.spring.boot.starter.UserAutoConfiguration

使用

新建一個springboot工程,新增如下依賴

    <dependency>
        <groupId>com.itpsc.spring.boot</groupId>
        <artifactId>itpsc-spring-boot-starter</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

application.properties中添加如下信息

com.itpsc.username=itpsc
com.itpsc.password=itpsc@123

啓動springboot

@SpringBootApplication
public class BootItpscTestApplication {

    public static void main(String[] args) {
        ApplicationContext applicationContext = SpringApplication.run(BootItpscTestApplication.class, args);
        UserService userService = applicationContext.getBean(UserService.class);
        userService.print();
    }

}

輸出結果

username=itpsc password=itpsc@123

如此,自動裝配就完成了。

發佈了213 篇原創文章 · 獲贊 29 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章