1. 程式人生 > >微服務架構SpringCloud入門

微服務架構SpringCloud入門

SpringBoot簡介

定義

Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程.Spring Boot現在已經成為Java開發領域的一顆璀璨明珠,它本身是包容永珍的,可以跟各種技術整合。成為SpringBoot全家桶。

特點

  1. 建立獨立的春天應用程式
  2. 嵌入的Tomcat的,無需部署WAR檔案
  3. 簡化Maven的配置
  4. 自動配置春天
  5. 提供生產就緒型功能,如指標,健康檢查和外部配置

建立第一個SpringBoot例項

1.建立Maven的工程

建立Maven工程,建立簡單專案,型別為jar

修改JDK版本必須1.8以上,springboot基本上廢除了1.6,1.7

2.全新構建方式的pom.xml

傳統構建Maven的專案,POM中的依賴包繁多,升級一個罐子版本時,會引發新的衝突,除錯許久。而SpringBoot接管了罐子的版本,它構建好一套,這套中各罐子的版本已經測試好,開發者再無需去關注每個依賴包的版本及衝突問題。從而簡化開發。

再者,它啟動也非常快,直接執行一個類,使用的tomcat的Maven的外掛。開發除錯時效率提高。

<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.tedu</groupId>

<artifactId>sc-hello</artifactId>

<version>0.0.1-SNAPSHOT</version>

<parent>

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

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

<version>1.5.4.RELEASE</version>

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

</parent>

<properties>

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

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

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

</properties>



<dependencies>

<dependency>

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

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

</dependency>

</dependencies>

</project>

3. 建立的HelloController

使用@RestController替代@Controller和@ResponseBody(返回JSON串)

package com.tedu.controller;


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

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


@RestController

public class HelloController {

@RequestMapping("hello")

public String hello(){

return "hello springboot";

}

}

4.全新執行方式

注意:必須加@SpringBootApplication註解,同時必須有包名

package com.tedu;



import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;



@SpringBootApplication

public class RunApplication {

public static void main(String[] args) {

SpringApplication.run(RunApplication.class, args);

}

}

直接執行的jar啟動網路服務

1.修改的pom.xml

在pom.xml中中增加外掛外掛,忘記加會報“清單找不到”異常。

<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>

<parent>

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

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

<version>1.5.4.RELEASE</version>

</parent>

<groupId>com.tedu</groupId>

<artifactId>hello</artifactId>

<version>0.0.1-SNAPSHOT</version>

<dependencies>

<dependency>

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

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

</dependency>

</dependencies>

<build>

<plugins>

<plugin>

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

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

</plugin>

</plugins>

</build>

</project>

2.執行的jar包

D:\ java \ ws \ stu \ hello \ target> D:\ java \ env \ jdk1.8 \ bin \ java -jar hello-0.0.1-SNAPSHOT.jar

SpringBoot和MyBatis的整合

系統架構圖

建立資料庫表

建立mybatisdb資料庫,設定UTF-8字符集。

建立使用者表:

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (

  `ID` int(11) NOT NULL,

  `NAME` varchar(30) DEFAULT NULL,

  `BIRTHDAY` datetime DEFAULT NULL,

  `ADDRESS` varchar(200) DEFAULT NULL,

  PRIMARY KEY (`ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

增加資料: 

insert  into `user`(`ID`,`NAME`,`BIRTHDAY`,`ADDRESS`) values
(1,'夏言','1573-01-01 00:00:00','桂州村'),
(2,'嚴嵩','1587-01-01 00:00:00','分宜縣城介橋村'),
(3,'徐階','1580-01-01 00:00:00','明松江府華亭縣'),
(4,'高拱','1566-01-01 00:00:00','河南省新鄭市高老莊村'),
(5,'張居正','1558-01-01 00:00:00','江陵');

建立Maven的工程

建立Maven工程,建立簡單專案,型別為jar

pom.xml的檔案上新增依賴

<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>cn.tedu</groupId>

<artifactId>sc-mybatis</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>



<name>sc-mybatis</name>

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



<parent>

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

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

<version>1.5.4.RELEASE</version>

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

</parent>

<properties>

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

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

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

</properties>



<dependencies>

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

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

<version>1.3.0</version>

</dependency>

<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>mysql</groupId>

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

</dependency>

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-core</artifactId>

</dependency>

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

</dependency>

<dependency>

<groupId>com.fasterxml.jackson.datatype</groupId>

<artifactId>jackson-datatype-joda</artifactId>

</dependency>

<dependency>

<groupId>com.fasterxml.jackson.module</groupId>

<artifactId>jackson-module-parameter-names</artifactId>

</dependency>

<!-- alibaba的druid資料庫連線池 -->

<dependency>

<groupId>com.alibaba</groupId>

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

<version>1.1.0</version>

</dependency>

</dependencies>

</project>

關係編寫User.java實體類

建立POJO物件

package cn.tedu.model;



import java.util.Date;



public class User {

private Integer id;

private String name;

private Date birthday;

private String address;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Date getBirthday() {

return birthday;

}

public void setBirthday(Date birthday) {

this.birthday = birthday;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

}

編輯UserMapper.xml

<?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">



<!-- namespace名稱空間,唯一特性 -->

<mapper namespace="cn.tedu.mapper.UserMapper">

<select id="find" resultType="User">

select id,name,birthday,address from user

</select>

</mapper>

UserMapper.java介面 

package cn.tedu.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import cn.tedu.model.User;


//註解和xml方式混合

public interface UserMapper {

//呼叫xml方式

    public List<User> find();



    //呼叫註解方式

    @Select("select * from user where id=#{id}")

public User get(@Param("id") Integer id);

}

UserService.java

package cn.tedu.service;


import java.util.List;
import cn.tedu.model.User;


public interface UserService {

    public List<User> find();

    public User get(Integer id);

}

UserServiceImpl.java

package cn.tedu.service.impl;


import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.tedu.mapper.UserMapper;
import cn.tedu.model.User;
import cn.tedu.service.UserService;


@Service
public class UserServiceImpl implements UserService{

    @Autowired

    private UserMapper userMapper;

    public List<User> find() {

        return userMapper.find();

    }

    public User get(Integer id){

        return userMapper.get(id);

    }
}

UserController.java

使用@RestController替代@Controller和@ResponseBody(返回JSON串)

package cn.tedu.controller;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.tedu.model.User;
import cn.tedu.service.UserService;


@RestController
@RequestMapping(value = "/user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/find")
    public List<User> find() {
        return userService.find();
    }

    @RequestMapping("/get/{id}")
    public User get(@PathVariable Integer id){
        return userService.get(id);
    }

}

編寫application.yml

全域性配置檔案,YML為新的配置檔案方式,注意其中格式為空格,不能有標籤。

配置埠,配置資料來源,配置MyBatis的全域性配置。

注意:如果埠,啟動時日誌顯示8080,說明此檔案未載入檢查原因一般是檔名或者路徑不正確。

server:

  port: 8070



spring:

    datasource:

        driver-class-name: com.mysql.jdbc.Driver

        url: jdbc:mysql://127.0.0.1:3306/mybatisdb

        username: root

        password: root



mybatis:

  typeAliasesPackage: cn.tedu.model

  mapperLocations: classpath:mappers/*.xml

編寫RunApplication.java

package cn.tedu;


import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
@MapperScan("cn.tedu.mapper") //掃描Mybatis介面檔案
public class RunApplication {

    public static void main(String[] args) {

        SpringApplication.run(RunApplication.class, args);

    }

}

最後訪問:     http:// localhost:8070 / user / find或者  http:// localhost:8070 / user / get / 5即可得到結果

相關推薦

服務架構SpringCloud入門

SpringBoot簡介 定義 Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程.Spring Boot現在已經成為Java開發領域的一顆璀璨明珠,它本身是包容永珍的,可以跟各種技術整合。成為Sp

springCloud Finchley 服務架構入門到精通【二】Eureka服務註冊與發現

一、開發工具說明 為了防止程式碼執行錯誤,建議使用一致的版本: 開發工具:Eclipse : Version: Neon.3 Release (4.6.3) 開發spring cloud應用推薦使用 idea或者spring官方提供的STS工具,筆者由於

服務架構 SpringCloud(一)組件和概念介紹

都在 tar 需要 冗余代碼 watermark keep 諸多 註冊 路由配置 一:什麽是微服務(Microservice)  微服務英文名稱Microservice,Microservice架構模式就是將整個Web應用組織為一系列小的Web服務。這些小的Web服務可以獨

服務架構 SpringCloud(三)Eureka(註冊中心集群篇)

ima static ice fff active hostname 需要 lee 分別是 一:集群環境搭建第一步:我們新建兩個註冊中心工程一個叫eureka_register_service_master、另外一個叫eureka_register_service_back

服務架構 SpringCloud(二)Eureka(服務註冊和服務發現基礎篇)

col false -c conf gis 功能 pri desc sch 一:Eureka簡介 Eureka是Spring Cloud Netflix的一個子模塊,也是核心模塊之一。用於雲端服務發現,一個基於REST的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移

服務SpringCloud入門

一個個 事情 一鍵 spring 業務需求 界面 開源組件 選型 通信機制 微服務和SpringCloud入門 微服務是什麽 微服務的核心是將傳統的一站式應用,根據業務拆分成一個一個的服務,徹底去耦合,每個微服務提供單個業務功能的服務,一個服務做一件事情,從技術角度看就是一

服務架構 SpringCloud(四)Ribbon

一:Ribbon是什麼?  Ribbon是Netflix釋出的開源專案,主要功能是提供客戶端的軟體負載均衡演算法,將Netflix的中間層服務連線在一起。Ribbon客戶端元件提供一系列完善的配置項如連線超時,重試等。簡單的說,就是在配置檔案中列出Load Balancer(簡稱LB)

服務架構 SpringCloud(三)註冊中心叢集篇

叢集環境搭建     第一步:我們新建兩個註冊中心工程一個叫eureka_register_service_master、另外一個叫eureka_register_service_backup eureka_register_service_master的applicat

服務架構--SpringCloud(7)

Hystrix *斷路器、熔斷器 Hystrix   避免單口呼叫導致全域性宕掉 *Hystrix是一個用於處理分散式系統的延遲和容錯的開源庫,在分散式系統裡,許多依賴不可避免的會呼叫失敗,比如超時、異常等,Hystrix能夠保證在一個依賴出問題的情況下,不會導致整體

spring-cloud Finchley 服務架構入門到精通【六】BUS RabbitMQ 配置重新整理

上篇文章介紹了高可用的配置中心,如何在不重啟伺服器的情況下對配置檔案進行更新呢?請看下面的介紹 一、安裝rabbitMq 1、下載地址 2、執行 3、cloud整合配置說明 預設埠: 5672 預設使用者名稱:guest

2019最新 服務架構SpringCloud百講教程

課程目錄    01_第一模組課程介紹.mp4    02_微服務安全要解決什麼問題.mp4    03_白話OAuth2.mp4* O& v6 Z: _/ b; U$ T    04_OAuth2的正式定義.m

SpringCloud入門 - 服務架構搭建(註冊中心、服務提供者、服務消費者)

前言:以maven多模組化的方法搭建                                   

SpringCloud極簡入門 (一) 服務架構

作者:陳剛,叩丁狼高階講師。原創文章,轉載請註明出處。一.單體應用什麼是單體應用?簡而言之我們以前傳統的應用就是單體應用,即所有的模組,元件等都在一個應用中進行開發,專案的部署也是把整個應用在一個容器中進行部署,並且一個應用享用一個數據庫。在單體應用中我們通常把應用分為三個組

(三)springcloud - 服務架構代碼結構

article 搭建 ring 分享 組件 particle ima api 微服務雲架構 我們根據微服務化設計思想,結合spring cloud本身的服務發現、治理、配置化管理、分布式等項目優秀解決方案,我們使用Maven技術將框架進行模塊化、服務化、原子化封裝,也為後期

基於SpringCloud服務架構實戰案例項目

微服務 spring cloud spring boot QuickStart基於SpringCloud體系實現,簡單購物流程實現,滿足基本功能:註冊、登錄、商品列表展示、商品詳情展示、訂單創建、詳情查看、訂單支付、庫存更新等等。每個業務服務采用獨立的MYSQL數據庫,初期考慮用到如下組件:服務註

springcloud~演化的服務架構

ext 這就是 com 比較 eureka mic 層次 rabbit 機制 微服務 將整體功能按著模塊劃分成多個獨立的單元,這些單元可以獨立部署,它們之前通過輕量級的web api方式進行通訊,對於微服務框架來說,最流行的就是springcloud和Service Fa

SpringCloud學習--服務架構

registry org 什麽 moni ima red 都是 html 小團隊 目錄     微服務架構快速指南     SOA     Dubbo     Spring Cloud     Dubbo與SpringCloud對比 微服務(Microservi

SpringCloud-服務架構

前言 在講springCloud之前講講為什麼要有springCloud,從學習中知道springCloud的興起是因為Dubbo社群五年沒有更新,在計算機這個行業裡面五年沒有進步真的太恐怖了,所以springCloud火熱。雖然現在Dubbo已經開始活躍,但是springCloud