一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - SpringCloud入門實驗環(huán)境搭建

SpringCloud入門實驗環(huán)境搭建

2021-09-08 10:32遇見_line Java教程

這篇文章主要介紹了SpringCloud入門實驗環(huán)境搭建的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用SpringCloud,感興趣的朋友可以了解下

微服務(wù)

個人理解:

所謂微服務(wù)是指每個模塊都可以獨立完成自己的核心業(yè)務(wù),某一個模塊的崩潰不影響其他模塊的運行,
每個微服務(wù)有自己單獨的一個數(shù)據(jù)庫
每一個微小的服務(wù)組成了一個復(fù)雜的軟件系統(tǒng)

微服務(wù)架構(gòu)

微服務(wù)指的是服務(wù)的大小,關(guān)注的是完成一個具體的服務(wù)(醫(yī)院的科室)

微服務(wù)架構(gòu)是一種架構(gòu)模式 ,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間互相協(xié)調(diào)、互相
配合,為用戶提供最終價值。一種將一個單一應(yīng)用程序開發(fā)為一組小型服務(wù)的方法,每個服務(wù)都在其運行
的進(jìn)程中。(整個醫(yī)院)

優(yōu)點:

  • 針對特定服務(wù)發(fā)布,影響小,風(fēng)險小,成本低
  • 頻繁發(fā)布版本,快速交付需求
  • 低成本擴(kuò)容,彈性伸縮,適應(yīng)云環(huán)境

SpringCould簡介

Springboot關(guān)注于更快的開發(fā)單體的微服務(wù),而SpringCloud關(guān)注于全局服務(wù)的治理

Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊、配置中心、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用 Spring Boot 的開發(fā)風(fēng)格做到一鍵啟動和部署。

Spring 并沒有重復(fù)制造輪子,它只是將目前各家公司開發(fā)的比較成熟、經(jīng)得起實際考驗的服務(wù)框架組合起來,通過 Spring Boot 風(fēng)格進(jìn)行再封裝、屏蔽掉了復(fù)雜的配置和實現(xiàn)原理,最終給開發(fā)者留出了一套簡單易懂、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包。

環(huán)境搭建

在idea中新建一個maven父工程在其pom配置對應(yīng)依賴,以管理子類依賴的版本

 <properties>

        <lombock.version>1.18.18</lombock.version>
        <log4j.version>1.2.17</log4j.version>
    </properties>
    <dependencyManagement>

        <dependencies>
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-eureka-client -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
                <version>3.0.2</version>
            </dependency>

            <!--spring cloud 依賴包-->
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR9</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring boot 依賴包-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.3.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--數(shù)據(jù)庫驅(qū)動-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.22</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.21</version>
            </dependency>
            <!--springboot 啟動器-->
<!--            <dependency>-->
<!--                <groupId>org.springframework.boot</groupId>-->
<!--                <artifactId>spring-boot-starter</artifactId>-->
<!--                <version>2.4.4</version>-->
<!--            </dependency>-->
            <!--JUnit-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13</version>
                <scope>test</scope>
            </dependency>
            <!--lombock-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombock.version}</version>
                <scope>import</scope>
            </dependency>
            <!--log4j-->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>

            </dependency>
        </dependencies>
    </dependencyManagement>

1. 創(chuàng)建數(shù)據(jù)庫

創(chuàng)建名為db01的數(shù)據(jù)庫,有一張表dept

SpringCloud入門實驗環(huán)境搭建

2. 新建一個子模塊api

其中只有一個實體類dept對應(yīng)我們數(shù)據(jù)庫中的表

SpringCloud入門實驗環(huán)境搭建

public class Dept {
    private int deptnumber;
    private String dname;
    private String d_source;
   //對應(yīng)屬性的get和set方法
}

3. 新建一個子模塊provider作為服務(wù)的提供者

導(dǎo)入依賴

  <dependencies>
  <!--將api模塊導(dǎo)入由此可使用Dept實體類-->
        <dependency>
            <groupId>org.example</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>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
    </dependencies>

配置配置文件和對應(yīng)的操作類和接口

application.xml

server:
  port: 8081

mybatis:
  type-aliases-package: pojo
  mapper-locations: classpath:Mybatis/mapper/*.xml
  config-location: classpath:Mybatis/mybatis-config.xml


spring:
  application:
    name: provider-name
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/db01?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8

mapper-config.xml和Deptmapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="cacheEnabled" value="true"/>
    </settings>
</configuration>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.Dao.DeptDao">
    <insert id="add" parameterType="Dept">
        insert into dept(dname, d_source) values (#{dname},DATABASE());
    </insert>
    <select id="queryByID" resultType="Dept" parameterType="Long">
        select * from dept where deptnumber = #{id};
    </select>
    <select id="queryAll" resultType="Dept">
        select * from dept;
    </select>
</mapper>

對應(yīng)的Dao,Controller,Service

@Mapper
public interface DeptDao {
    boolean add(Dept dept);
    Dept queryByID(long id);
    List<Dept> queryAll();
}
@Service
public class DeptImpl implements DeptService{
    @Resource
    private DeptDao deptDao;
    public boolean add(Dept dept) {

        return deptDao.add(dept) ;
    }

    public Dept queryByID(long id) {
        System.out.println("deptimpl"+id);

        return deptDao.queryByID(id);
    }

    public List<Dept> queryAll() {
        return deptDao.queryAll();
    }
}
@RestController
public class DeptController {
    @Autowired
    private DeptImpl deptimpl;
    @PostMapping("/dev/add")
    public boolean addDept(@RequestBody Dept dept){
        System.out.println(dept);
       return deptimpl.add(dept);
    }
    @GetMapping("/dev/{id}")
    public Dept DeptqueryByID(@PathVariable("id") long id) {
        System.out.println("deptcontroller"+id);
        return deptimpl.queryByID(id);
    }
    @PostMapping("/dev/list")
    public List<Dept> DeptqueryAll() {
        return deptimpl.queryAll();
    }

啟動類

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

新建子模塊consumer作為消費者

導(dǎo)入依賴

<dependencies>
    <dependency>
        <groupId>org.example</groupId>
        <artifactId>springcloud-api</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    </dependencies>

配置文件

server:
  port: 80

config類和controller

/*
RestTemplate 是從 Spring3.0 開始支持的一個 HTTP 請求工具,它提供了常見的REST請求方案的模版,例
如 GET 請求、POST 請求、PUT 請求、DELETE 請求以及一些通用的請求執(zhí)行方法 exchange 以及 execute。
*/
@Configuration
public class ConfigBean {
    @Bean
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }

}
@RestController
public class ConsumerController {
    @Autowired
    private RestTemplate template;
    private static final String url="http://localhost:8001";
    @RequestMapping("/consumer/get/{id}")
    public Dept getByID(@PathVariable long id){
                                                    //請求的路徑,請求返回的對象
        Dept getEntity = template.getForObject(url + "/dev/" + id, Dept.class);
        return getEntity;
    }
    @RequestMapping("/consumer/add")
    public boolean add(String dname){
        Dept dept = new Dept();
        dept.setDname(dname);
        System.out.println(dept);
        //請求的路徑,傳遞的參數(shù),返回的對象
        return template.postForObject(url+ "/dev/add",dept,Boolean.class);
    }
    @RequestMapping("/consumer/list")
    public List<Dept> list(){
        //請求的路徑,返回的對象
        return template.postForObject(url+"/dev/list",void.class,List.class);
    }

}

啟動類及運行結(jié)果

debug-connect refuserd---debug-傳參為null

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

SpringCloud入門實驗環(huán)境搭建

debug

子項目無法使用父項目的依賴包

1 如果父項目pom使用

<dependencyManagement>
<dependencies>
          ....

</dependencies>
</dependencyManagement>

方式,則子項目pom不會自動使用父pom中的jar包, 如果需要使用,就要給出groupId和artifactId,無需給出version

使用是為了統(tǒng)一管理版本信息

在子工程中使用時,還是需要引入坐標(biāo)的,但是不需要給出version

在我們項目頂層的POM文件中,元素。

通過它元素來管理jar包的版本,

讓子項目中引用一個依賴而不用顯示的列出版本號。

Maven會沿著父子層次向上找,

直到找到一個擁有dependencyManagement元素的項目,

然后它就會使用在這個dependencyManagement元素中指定的版本號。

required a bean of type "DeptDao" that could not be found.

使用@Mapper而不是@Repository

    1、使用@mapper后,不需要在spring配置中設(shè)置掃描地址,通過mapper.xml里面的namespace屬性對應(yīng)相關(guān)的mapper類,spring將動態(tài)的生成Bean后注入到ServiceImpl中。

    2、@repository則需要在Spring中配置掃描包地址,然后生成dao層的bean,之后被注入到ServiceImpl中

Connection refused connect

檢查url端口號,是否寫對,是否占用

RestTemplate傳遞對象無法接收(null)

在服務(wù)器端對應(yīng)的參數(shù)上添加@RequestBody

    @PostMapping("/dev/add")
    public boolean addDept(@RequestBody Dept dept){
        System.out.println(dept);
       return deptimpl.add(dept);
    }

以上就是SpringCloud入門實驗環(huán)境搭建的詳細(xì)內(nèi)容,更多關(guān)于SpringCloud 環(huán)境搭建的資料請關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://juejin.cn/post/6949533826339700767#heading-2

延伸 · 閱讀

精彩推薦
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經(jīng)有好久沒有升過級了。升級完畢重啟之后,突然發(fā)現(xiàn)好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發(fā)現(xiàn)了對于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7472021-02-04
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程xml與Java對象的轉(zhuǎn)換詳解

    xml與Java對象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發(fā)項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java實現(xiàn)搶紅包功能

    Java實現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
主站蜘蛛池模板: 天天综合天天综合色在线 | 91在线高清视频 | 国产欧美日韩高清专区ho | 鬼惨笑小说 | 四虎影院在线免费 | 国产自在自线午夜精品之la | 乌克兰一级毛片9一18 | aaa一级特黄 | 国产高清国内精品福利色噜噜 | 1024视频色版在线网站 | 午夜精品在线 | 国产精品99久久久 | 亚洲精美视频 | 国产精品igao视频网网址 | 亚洲zooz人禽交xxxx | 亚洲 欧美 制服 校园 动漫 | yy8090韩国日本三理论免费 | 乌克兰呦12~14 | 国产婷婷高清在线观看免费 | 蜜桃在线 | 强插美女 | 国产精品29页 | 美女啪啪国产 | 我的妹妹最近有点怪免费播放 | 欧美a在线观看 | 网站在线播放 | 2021麻豆剧果冻传媒入口永久 | 日本在线亚州精品视频在线 | 欧美日韩精品一区二区三区视频 | 国产成人手机在线 | 欧洲男同直粗无套播放视频 | 国产亚洲人成网站天堂岛 | 四虎永久免费地址在线网站 | 冰漪丰满大乳人体图片欣赏 | 欧美成人aa | 华人在线京东热 | 午夜A级理论片左线播放 | 国产麻豆91网在线看 | 国产免费一区不卡在线 | 99久久精品免费看国产一区 | 日本人成年视频在线观看 |