1. 程式人生 > 其它 >react單獨配置代理

react單獨配置代理

1.基本思想

簡單的說,就是引入了一些相關依賴和一些初始化的配置。主要是基於它的起步依賴和自動配置。

1.1起步依賴

把具備某些功能的座標打包到一起,簡化依賴匯入。

比如匯入了spring-boot-starter-web這個starter,那麼和web相關的jar包都一起自動匯入到專案中了,下圖可以說明:

1.2自動配置

無需手動配置xml,由starter進行自動配置並管理bean,簡化開發過程。

自動配置舉例說明:以mybatis-spring-boot-starter為例。

1)當匯入了mybatis-spring-boot-starter後,其匯入的相關依賴如下:

2)可以看到其匯入了mybatis-spring-boot-autoconfigure

的jar包,其中有一個自動配置類MybatisAutoConfiguration,截圖:

3)開啟此類,部分關鍵程式碼如下:

4)對於註解@Configuration@Bean註解,其結合使用可以替代傳統的xml配置檔案。@Bean分別把SqlSessionTemplateSqlSessionFactory注入到Spring容器。

對於註解@EnableConfigurationProperties,其作用是讓後面指定的配置屬性生效。這裡指定的配置屬性是MybatisProperties類:

把此類標記是一個配置屬性類,prefix指定了字首,其屬性就是配置的可選引數。如配置包的別名:mybatis.type-aliases-package=com.zys.entity

5)在SpringBoot中,其使用了註解@Import,那麼它會選擇性的讀取META-INF/spring.factories配置檔案

6)如此只要在spring.factories檔案配置了,就會根據條件載入儘量,mybatis中自動配置的內容如下:

其中key是固定的,value是指定配置類的全路徑。

2.命名規範

spring-boot-starter-xxx是SpringBoot官方定義的jar,如spring-bbot-starter-web。

xxx-spring-boot-starter是非官網定義的,如第三方jar包mybatis-spring-boot-starter。

3.自定義starter舉例

說明:自定義一個starter,名字是token-redis-spring-boot-starter。

3.1新建專案

建立一個maven的專案,不引入任何的依賴

3.2配置pom

pom.xml新增一下程式碼

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <version>2.0.0.RELEASE</version>
            <optional>true</optional>
        </dependency>
    </dependencies>

3.3讀取並注入配置資訊

1)在包util下建立類TokenProperties,此類是一個配置屬性類

package com.example.demo.util;

import org.springframework.boot.context.properties.ConfigurationProperties;
//配置字首,在配置檔案中使用時字首就是hello,如hello.redis-host
@ConfigurationProperties(prefix = "hello")
public class TokenProperties {
    //命名規範必須是駝峰式,解析時會自動將大寫轉小寫,並加-
    private String redisHost="localhost";
    private String redisUsername="root";
    private String redisPassword="123456";

    public String getRedisHost() {
        return redisHost;
    }

    public void setRedisHost(String redisHost) {
        this.redisHost = redisHost;
    }

    public String getRedisUsername() {
        return redisUsername;
    }

    public void setRedisUsername(String redisUsername) {
        this.redisUsername = redisUsername;
    }

    public String getRedisPassword() {
        return redisPassword;
    }

    public void setRedisPassword(String redisPassword) {
        this.redisPassword = redisPassword;
    }
}

2)在包service下建立類TokenService,作為一個服務

package com.example.demo.service;

import com.example.demo.util.TokenProperties;
import org.springframework.beans.factory.annotation.Autowired;

public class TokenService {

@Autowired
private TokenProperties tokenProperties;

public String getToken() {
//模擬生成token的資訊
return tokenProperties.getRedisHost() + "," + tokenProperties.getRedisUsername() + "," + tokenProperties.getRedisPassword();
}
}

3)在包config下建立類TokenAutoConfiguration。實現自動配置,把服務注入到Spring中。

package com.example.demo.config;

import com.example.demo.service.TokenService;
import com.example.demo.util.TokenProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(TokenProperties.class)
public class TokenAutoConfiguration {
@Bean public TokenService tokenService(){ return new TokenService(); } }

3.4建立spring.factories檔案

在資源目錄下,建立檔案META-INF\spring.factories,指定自動配置類的路徑

#後面的路徑是TokenAutoConfiguration所在的路徑
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.example.demo.config.TokenAutoConfiguration

反斜槓表示換行,太長了可以換到下一行。

3.5把專案打成jar釋出到maven倉庫

1)直接使用idea的maven功能進行打包

2)使用命令打包(二選一)

開啟cmd,切換到專案所在的路徑,執行mvn clean install,就會將專案打包到本地的maven倉庫,就可以使用啦。

如果執行時出現mvn不是內部命令,則需要給maven配置環境變數。配置方式如下:

在環境變數中新建一個變數MAVEN_HOME,值是maven所在的路徑,

D:\Software\Develop\maven\apache-maven-3.3.9

然後在path加新增下面的語句

%MAVEN_HOME%bin

配置完成後重新開啟cmd進行打包,成功後就可以正常使用了。

3.6使用自定義的starter

1)新建一個SpringBoot的專案,匯入依賴

  <dependency>
       <groupId>com.example</groupId>
       <artifactId>token-redis-spring-boot-starter</artifactId>
       <version>1.0-SNAPSHOT</version>
   </dependency>

由於在建立starter時包名(groupId)是com.example,故這裡也是com.example,兩種要保持一致。

2)在配置檔案進行配置來測試,輸入時會自動提示:

配置的內容:

hello.redis-host=127.0.0.1
hello.redis-username=root
hello.redis-password=123456

3)建立TestController類進行測試

package com.example.demo;

import com.example.demo.service.TokenService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
@Autowired private TokenService tokenService; @RequestMapping("/test") public String test(){ return tokenService.getToken(); } }

專案啟動後在瀏覽器輸入即可看到相應的資訊,如果不配置就使用預設的,如果配置了就使用配置內容。