spring-boot-starter-快速集成第三方jar

声明:

        这篇文章是在学习网易云课堂后所做的笔记,主要知识点均来源于视频课程。如果需要了解更多信息请联系网易云课堂相关工作人员。这是一个Java方向高级开发工程师系列课程,如果时间充足,后续会将课程内容以文章的形式整理分享。写的不好,希望大家批评指正。


     这是一个通过自定义spring-boot-starter快速集成第三方jar包的案例。首先明确三者之间的关系:

 

自己写starter的步骤

        1.建maven工程。

        2.引入spring-boot-start、spring-boot-autoconfigure、第三方jar(也就是以前你们公司自己写的jar包)。

        3.如需要生成配置元信息(即spring-configuration-metadata.json),加入spring-boot-configuration-processor依赖;

        4.编写自动配置类

        5.配置发现配置文件:META-INF/spring.factories

        6.打包发布

实操:

girl项目:

        这个项目模拟需要集成的你们公司以前写的jar包。

Girl.java:

package com.study;

/**
 * @Author: 赖天祥
 * @Date: 2019-09-07 17:45
 * @Description:
 */
public class Girl {
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Girl{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>



    <groupId>com.study</groupId>

    <artifactId>girl</artifactId>

    <version>1.0-SNAPSHOT</version>

    <packaging>jar</packaging>



    <name>girl</name>

    <url>http://maven.apache.org</url>



    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    </properties>



    <dependencies>

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <version>3.8.1</version>

            <scope>test</scope>

        </dependency>

    </dependencies>

</project>

打包:

        打包到maven仓库。

girl-spring-boot-starter项目(重点):

        这个项目就是你为了集成第三方jar包而创建的starter。

GirlProperties.java:

        这个类用于对应配置文件的内容。

package com.study.girl.spring.boot.autoconfigure;



import org.springframework.boot.context.properties.ConfigurationProperties;



/**

 * @Author: 赖天祥

 * @Date: 2019-09-07 20:11

 * @Description:

 */

@ConfigurationProperties(prefix = "com.girl")

public class GirlProperties {

    private String name;

    private Integer age;



    public String getName() {

        return name;

    }



    public void setName(String name) {

        this.name = name;

    }



    public Integer getAge() {

        return age;

    }



    public void setAge(Integer age) {

        this.age = age;

    }

}


 

GirlAutoConfigure.java:

        自动配置类,将加载的配置文件,封装为一个bean对象。

package com.study.girl.spring.boot.autoconfigure;



import com.study.Girl;

import org.springframework.boot.context.properties.EnableConfigurationProperties;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;



/**

 * @Author: 赖天祥

 * @Date: 2019-09-07 20:13

 * @Description:

 */

@Configuration

@EnableConfigurationProperties(GirlProperties.class)

public class GirlAutoConfigure {

    @Bean

    public Girl getGirl(GirlProperties girlProperties) {

        Girl girl = new Girl();

        girl.setName(girlProperties.getName());

        girl.setAge(girlProperties.getAge());

        return girl;

    }

}

 

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>



    <groupId>com.study</groupId>

    <artifactId>girl-spring-boot-starter</artifactId>

    <version>1.0-SNAPSHOT</version>

    <packaging>jar</packaging>



    <name>girl-spring-boot-starter</name>

    <url>http://maven.apache.org</url>



    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    </properties>



    <dependencies>

        <dependency>

            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <version>3.8.1</version>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>com.study</groupId>

            <artifactId>girl</artifactId>

            <version>1.0-SNAPSHOT</version>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter</artifactId>

            <version>2.0.8.RELEASE</version>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-autoconfigure</artifactId>

            <version>2.0.8.RELEASE</version>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-configuration-processor</artifactId>

            <version>2.0.3.RELEASE</version>

            <optional>true</optional>

        </dependency>

    </dependencies>

    <build>

        <resources>

            <resource>

                <directory>META-INF</directory>

                <targetPath>META-INF/</targetPath>

            </resource>

        </resources>

    </build>



</project>

 

 

 

创建META-INF文件夹,及spring.factories文件:

        这个文件里需要指定你的自动配置类(注意这里不要换行)。

 

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.study.girl.spring.boot.autoconfigure.GirlAutoConfigure

 

最后的文件目录结构:

打包:

        打包到maven仓库。

 

demo项目

        这个就是你们新写的项目,需要用到以前写的jar,这里通过你自己写的starter快速集成进来。

在pom.xml文件中引入starter:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

   <modelVersion>4.0.0</modelVersion>

   <parent>

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-starter-parent</artifactId>

      <version>2.1.8.RELEASE</version>

      <relativePath/> <!-- lookup parent from repository -->

   </parent>

   <groupId>com.study</groupId>

   <artifactId>starter-demo</artifactId>

   <version>0.0.1-SNAPSHOT</version>

   <name>starter-demo</name>

   <description>Demo project for Spring Boot</description>



   <properties>

      <java.version>1.8</java.version>

      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

   </properties>



   <dependencies>

      <dependency>

         <groupId>org.springframework.boot</groupId>

         <artifactId>spring-boot-starter-web</artifactId>

      </dependency>



      <dependency>

         <groupId>org.springframework.boot</groupId>

         <artifactId>spring-boot-starter-test</artifactId>

         <scope>test</scope>

      </dependency>

      <dependency>

         <groupId>com.study</groupId>

         <artifactId>girl-spring-boot-starter</artifactId>

         <version>1.0-SNAPSHOT</version>

      </dependency>

   </dependencies>



   <build>

      <plugins>

         <plugin>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-maven-plugin</artifactId>

         </plugin>

      </plugins>

   </build>



</project>

配置文件application.yml:

com:

  girl:

    age: 25

    name: 貂蝉

server:

  port: 8080

使用:

package com.study.starterdemo;



import com.study.Girl;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;



@SpringBootApplication

@Controller

@RequestMapping("/demo")

public class StarterDemoApplication {



    public static void main(String[] args) {

        SpringApplication.run(StarterDemoApplication.class, args);

    }



    @Autowired

    private Girl girl;



    @ResponseBody

    @GetMapping("/get")

    public Girl get() {

        return girl;

    }



}

测试:

总结:

        新的项目,需要集成第三方的jar包,可以通过starter快速集成。本文是一个自己写starter的案例,是我的课堂笔记,也希望对你有帮助。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值