最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud環(huán)境搭建過(guò)程之Rest使用小結(jié)

 更新時(shí)間:2022年08月08日 08:38:11   作者:_學(xué)習(xí)  
這篇文章主要介紹了SpringCloud環(huán)境搭建之Rest使用,本文通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

今天來(lái)到SpringCloud的學(xué)習(xí),我們從spring boot微服務(wù)階段,學(xué)習(xí)到了用springboot去創(chuàng)建很多的微服務(wù),但是這么多微服務(wù)我們?nèi)绻ス芾?,以及相互之間的聯(lián)系呢?

而到了我們學(xué)習(xí)springcloud階段,其實(shí)相對(duì)而言是變簡(jiǎn)單的,不需要寫很多代碼以及什么操作,主要就是接收思想,了解其中的機(jī)制,而springCloud項(xiàng)目基于springboot項(xiàng)目,只需要幾行簡(jiǎn)單的配置即可開始使用;

那來(lái)到了我們最熟悉的官網(wǎng):https://spring.io/

進(jìn)入spring cloud的學(xué)習(xí),可以去讀讀這里的話,我讀懂了,不告訴你

從springcloud的學(xué)習(xí),我們可以看這張圖,我們學(xué)習(xí)這里面幾個(gè)部分

Rest環(huán)境搭建

環(huán)境說(shuō)明:jdk1.8,idea2019,maven3.6.X,springcloud最新版2021.0.3,mybatis-plus

我們首先搭建一個(gè)父工程項(xiàng)目,創(chuàng)建一個(gè)空的普通的maven項(xiàng)目,我們直接把src目錄刪除掉,pom文件寫下面的使用父工程管理依賴,這里都是與文章日期最新依賴。

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <junit.version>4.12</junit.version>
    <log4j.version>1.2.17</log4j.version>
    <lombok.version>1.18.24</lombok.version>
    <springcloud-version>2021.0.3</springcloud-version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <!--springcloud依賴-->
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${springcloud-version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- springboot依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.7.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--mysql驅(qū)動(dòng)-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.11</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>
        <!--日志測(cè)試-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
<build>
    <!--父工程的項(xiàng)目名稱-->
    <finalName>springcloud</finalName>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                <!--以$開頭結(jié)尾 符合在src/main/resources路徑下面訪問(wèn)到 主要是yml文件或者properties文件-->
                <delimiters>
                    <delimit>$</delimit>
                </delimiters>
            </configuration>
        </plugin>
    </plugins>
</build>

有了父工程項(xiàng)目,我們?cè)贉?zhǔn)備一個(gè)數(shù)據(jù)庫(kù)環(huán)境,寫一個(gè)api類,這里我們新建一個(gè)簡(jiǎn)單的賬戶表,往里面插入幾條簡(jiǎn)單的數(shù)據(jù)

DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
  `account_id` int(11) NOT NULL,
  `account_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `account_pwd` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  PRIMARY KEY (`account_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of account
-- ----------------------------
INSERT INTO `account` VALUES ('1', 'zhangsan', '333');
INSERT INTO `account` VALUES ('2', 'lisi', '444');
INSERT INTO `account` VALUES ('3', 'wangwu', '555');
INSERT INTO `account` VALUES ('4', 'zhangliu', '666');
INSERT INTO `account` VALUES ('5', 'qiqi', '777');
INSERT INTO `account` VALUES ('6', 'baba', '888');

新建一個(gè)maven普通項(xiàng)目起名叫springcloud-api,里面呢,放一個(gè)這樣的實(shí)體類,與表的關(guān)系對(duì)應(yīng)起來(lái)的一個(gè)簡(jiǎn)單對(duì)象,使用了lombok,這里大家可以自行去了解

1、導(dǎo)入依賴

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

我們可以看到這里如果正確會(huì)有一個(gè)小圓圈,如果你這里沒(méi)有,那就要檢查下父工程依賴了

2、編寫配置,這里沒(méi)有什么配置,所以就是濾過(guò)

3、編寫對(duì)應(yīng)代碼

provider-服務(wù)端提供者

再新建一個(gè)maven普通項(xiàng)目模塊,我們做服務(wù)的提供者

1、導(dǎo)入依賴

<dependencies>
    <dependency>
        <groupId>com.xuexi</groupId>
        <artifactId>springcloud-api</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
    </dependency>

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
    </dependency>

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-test</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>
</dependencies>

2、編寫配置

新建一個(gè)application.yml文件,內(nèi)容如下:

server:
  port: 8001

spring:
  application:
    name: springcloud-provider-account
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/lianxi?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8
    username: root
    password: 
    type: com.alibaba.druid.pool.DruidDataSource  #使用阿里的數(shù)據(jù)源

# mybatis-plus配置日志
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  type-aliases-package: com.xuexi.pojo
  mapper-locations: classpath:mapper/*.xml
  global-config:
    db-config:
      table-underline: true  #實(shí)體類駝峰轉(zhuǎn)下劃線,默認(rèn)就是

3、編寫代碼,服務(wù)提供者我們只需要編寫dao層和service層,這里使用了mybaits-plus所以比較簡(jiǎn)單,直接給大家截圖

dao層

service層

這里我們可以編寫一個(gè)controller進(jìn)行下測(cè)試

@RestController
public class AccountController {

    @Autowired
    AccountService accountService;

    @PostMapping("/account/add")
    public boolean addAccount(Account account){
        return accountService.save(account);
    }

    @GetMapping("/account/get/{id}")
    public Account get(@PathVariable("id") long id){
        return accountService.getById(id);
    }

    @GetMapping("/account/list")
    public List<Account> getAll(){
        return accountService.list(null);
    }
}

測(cè)試成功

consumer-消費(fèi)者

同樣的我們?cè)俳ㄒ粋€(gè)普通的maven子工程項(xiàng)目,我們進(jìn)行服務(wù)的消費(fèi)

1、導(dǎo)入依賴

<dependencies>
    <dependency>
        <groupId>com.xuexi</groupId>
        <artifactId>springcloud-api</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>

</dependencies>

2、編寫配置

新建一個(gè)application.yml

server:
  port: 80

3、編寫代碼

代碼編寫前,我們認(rèn)識(shí)一個(gè)東西,就是我們的標(biāo)題,REST這個(gè)東西,這里我覺(jué)得你學(xué)到這里應(yīng)該很容易理解,所以我覺(jué)得還是先上代碼吧

首先編寫一個(gè)config配置類,我們把RestTemplate這個(gè)對(duì)象接管到spring容器中

@Configuration
public class BeanConfig {
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

接著編寫我們的消費(fèi)代碼,ConsumerController

@RestController
public class ConsumerController {
    private static final String REST_URL_PREFIX = "http://localhost:8001";
    @Autowired
    RestTemplate restTemplate;

    @PostMapping("/cousumer/add")
    public boolean addAccount(Account account) {
        return restTemplate.postForObject(REST_URL_PREFIX+"/account/add",account,boolean.class);
    }
    @GetMapping("/cousumer/get/{id}")
    public Account get(@PathVariable("id") long id) {
        return restTemplate.getForObject(REST_URL_PREFIX+"/account/get/"+id,Account.class);
    }
    @GetMapping("/cousumer/list")
    public List<Account> getAll() {
        return restTemplate.getForObject(REST_URL_PREFIX+"/account/list",List.class);
    }
}

上面我都沒(méi)有給大家說(shuō)編寫springboot啟動(dòng)類,別到這里還沒(méi)啟動(dòng)呀,每一個(gè)項(xiàng)目下面,編寫一個(gè)這樣的啟動(dòng)類

@SpringBootApplication
public class Consumer_80 {
    public static void main(String[] args) {
        SpringApplication.run(Consumer_80.class,args);
    }
}

我們啟動(dòng)下消費(fèi)方,看下是否可以遠(yuǎn)程調(diào)用服務(wù)方服務(wù),測(cè)試成功,遠(yuǎn)程調(diào)用了我們的服務(wù)消費(fèi)掉

其實(shí)我們都學(xué)過(guò)網(wǎng)絡(luò)請(qǐng)求,RestTemplate其實(shí)就是封裝好的一個(gè)請(qǐng)求對(duì)象,然后可以通過(guò)get|post|delete|put請(qǐng)求,里面也沒(méi)有多少方法,點(diǎn)以下就都出來(lái)了,這么簡(jiǎn)單,很容易看懂并學(xué)會(huì)吧!

其實(shí)就像前后段分離,發(fā)送異步請(qǐng)求,通過(guò)不斷地請(qǐng)求服務(wù),然后去實(shí)現(xiàn)功能,一種直連的方式,對(duì)地址和端口請(qǐng)求服務(wù)

但是我們可以發(fā)現(xiàn),這樣是有缺點(diǎn)的,比如provider宕機(jī)了,consumer請(qǐng)求是請(qǐng)求不到了的,而且也不能做一些檢測(cè),負(fù)載均衡,輪詢等方式;那我們接著學(xué)習(xí)再加一層
下一篇我們嘗試下使用Eureka注冊(cè)中心,持續(xù)更新中·····

到此這篇關(guān)于SpringCloud環(huán)境搭建 --- Rest使用的文章就介紹到這了,更多相關(guān)SpringCloud  Rest使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring?Boot?多數(shù)據(jù)源處理事務(wù)的思路詳解

    Spring?Boot?多數(shù)據(jù)源處理事務(wù)的思路詳解

    這篇文章主要介紹了Spring?Boot?多數(shù)據(jù)源如何處理事務(wù),本文單純就是技術(shù)探討,要從實(shí)際應(yīng)用中來(lái)說(shuō)的話,我并不建議這樣去玩分布式事務(wù)、也不建議這樣去玩多數(shù)據(jù)源,畢竟分布式事務(wù)主要還是用在微服務(wù)場(chǎng)景下,對(duì)Spring?Boot?多數(shù)據(jù)源事務(wù)相關(guān)知識(shí)感興趣的朋友參考下本文
    2022-06-06
  • 淺談java如何實(shí)現(xiàn)Redis的LRU緩存機(jī)制

    淺談java如何實(shí)現(xiàn)Redis的LRU緩存機(jī)制

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著java如何實(shí)現(xiàn)Redis的LRU緩存機(jī)制展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 利用Mybatis?Plus實(shí)現(xiàn)一個(gè)SQL攔截器

    利用Mybatis?Plus實(shí)現(xiàn)一個(gè)SQL攔截器

    SQL攔截器是一種用于攔截和修改Mybatis執(zhí)行的SQL語(yǔ)句的工具,通過(guò)使用SQL攔截器,開發(fā)人員可以在執(zhí)行SQL語(yǔ)句之前或之后對(duì)其進(jìn)行修改或記錄,本文就來(lái)借助一下Mybatis-Plus實(shí)現(xiàn)一個(gè)SQL攔截器吧
    2023-05-05
  • Java程序打印奧林匹克標(biāo)志方法詳解

    Java程序打印奧林匹克標(biāo)志方法詳解

    這篇文章主要介紹了Java程序打印奧林匹克標(biāo)志方法詳解,需要的朋友可以參考下。
    2017-09-09
  • 解析ConcurrentHashMap: 預(yù)熱(內(nèi)部一些小方法分析)

    解析ConcurrentHashMap: 預(yù)熱(內(nèi)部一些小方法分析)

    ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成。Segment的結(jié)構(gòu)和HashMap類似,是一種數(shù)組和鏈表結(jié)構(gòu),今天給大家普及java面試常見問(wèn)題---ConcurrentHashMap知識(shí),一起看看吧
    2021-06-06
  • java return用法實(shí)例詳解

    java return用法實(shí)例詳解

    在本篇文章里小編給大家整理的是關(guān)于java return用法以及相關(guān)知識(shí)點(diǎn)總結(jié),需要的朋友們參考下。
    2019-08-08
  • 使用Postman自動(dòng)生成Cookie并轉(zhuǎn)換為Java代碼的實(shí)現(xiàn)

    使用Postman自動(dòng)生成Cookie并轉(zhuǎn)換為Java代碼的實(shí)現(xiàn)

    在接口測(cè)試中,有時(shí)候需要在請(qǐng)求中攜帶Cookie信息,為了方便測(cè)試,我們可以使用Postman來(lái)自動(dòng)生成Cookie,并將其轉(zhuǎn)換為Java代碼,以便在自動(dòng)化測(cè)試中使用,下面將介紹如何實(shí)現(xiàn)這一功能,需要的朋友可以參考下
    2024-11-11
  • SpringBoot的@Scheduled和@Schedules區(qū)別小結(jié)

    SpringBoot的@Scheduled和@Schedules區(qū)別小結(jié)

    本文主要介紹了SpringBoot的@Scheduled和@Schedules區(qū)別小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • 關(guān)于Java中finalize析構(gòu)方法的作用詳解

    關(guān)于Java中finalize析構(gòu)方法的作用詳解

    構(gòu)造方法用于創(chuàng)建和初始化類對(duì)象,也就是說(shuō),構(gòu)造方法負(fù)責(zé)”生出“一個(gè)類對(duì)象,并可以在對(duì)象出生時(shí)進(jìn)行必要的操作,在這篇文章中會(huì)給大家簡(jiǎn)單介紹一下析構(gòu)方法,需要的朋友可以參考下
    2023-05-05
  • springboot之聯(lián)表查詢方式

    springboot之聯(lián)表查詢方式

    這篇文章主要介紹了springboot之聯(lián)表查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評(píng)論

莎车县| 中阳县| 循化| 密云县| 阳高县| 仁化县| 嘉义市| 项城市| 永春县| 灵丘县| 乐平市| 普兰店市| 收藏| 固始县| 香港 | 澎湖县| 丰宁| 丽水市| 治多县| 芜湖市| 绥江县| 乌兰浩特市| 壤塘县| 邯郸市| 盖州市| 治多县| 八宿县| 沂水县| 伊春市| 荃湾区| 神农架林区| 千阳县| 西吉县| 咸阳市| 长汀县| 尚志市| 讷河市| 淳化县| 西峡县| 新昌县| 灵寿县|