微服務架構SpringCloud入門
SpringBoot簡介
定義
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程.Spring Boot現在已經成為Java開發領域的一顆璀璨明珠,它本身是包容永珍的,可以跟各種技術整合。成為SpringBoot全家桶。
特點
- 建立獨立的春天應用程式
- 嵌入的Tomcat的,無需部署WAR檔案
- 簡化Maven的配置
- 自動配置春天
- 提供生產就緒型功能,如指標,健康檢查和外部配置
建立第一個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