1. 程式人生 > >SpringCloud之基礎例項之服務端

SpringCloud之基礎例項之服務端

本文章總結摘錄的《Spring Cloud與Docker微服務架構實戰》,如果覺得文章對您有所幫助想有所精進,請購買正版書籍深入研究

書中所使用的H2資料庫的安裝詳見連結,流程十分清晰 H2資料庫安裝詳解

首先點選連結檢視自己的spring boot對應的spring cloud的版本 連結

引入pom依賴(本人使用的是Spring Boot 2.0.5.RELEASE於是選擇的是Finchley.RELEASE)

	<parent>
		<groupId> org.springframework.boot </groupId>
		<artifactId>
		spring-boot-starter-parent </artifactId>
		<version> 2.0.5.RELEASE </version>
	</parent>
	
	<properties>
		<project.build.sourceEncoding> UTF-8 </project.build.sourceEncoding>
		<java.version> 1.8 </java.version>
	</properties>

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

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		
		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<version>1.16.20</version>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Finchley.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<fork>true</fork>
				</configuration>
			</plugin>
		</plugins>
	</build>

準備建表語句,建立user.sql

drop table user if exists;
create table user (id bigint generated by default as identity,
					username varchar(40),
					name varchar(20),
					age int(3),
					balance decimal(10,2),
					primary key(id));

準備資料,建立data.sql

insert into user (id, username, name, age, balance) values(1,'account1','Etoak1',20,100.00);
insert into user (id, username, name, age, balance) values(2,'account2','Etoak2',28,180.00);
insert into user (id, username, name, age, balance) values(3,'account3','Etoak3',32,280.00);

建立使用者實體類(這裡使用了Lombok的@Data)

package com.etoak.crazy.entity.h2;

import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import lombok.Data;

@Entity
@Data
/*
 * @Data相當於同時使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor這些註解
 * @ToString:用在類上,可以自動覆寫toString方法
 * @EqualsAndHashCode:用在類上,自動生成equals方法和hashCode方法
 * @RequiredArgsConstructor:用在類上,自動生成無參構造和使用所有引數的建構函式
 * */
public class User {

	@Id
	@GeneratedValue(strategy= GenerationType.AUTO)
	private Long id;

	@Column
	private String username;
	@Column
	private String name;
	@Column
	private Integer age;
	@Column
	private BigDecimal balance;
}

建立Dao

package com.etoak.crazy.dao;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.etoak.crazy.entity.h2.User;


@Repository
public interface H2UserRepository extends JpaRepository<User,Long>{

}

建立Controller

package com.etoak.crazy.controller.h2;


import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import com.etoak.crazy.dao.H2UserRepository;
import com.etoak.crazy.entity.h2.User;

@RestController
public class H2UserController {
	
	@Autowired
	private H2UserRepository userRepository;
	
	@GetMapping("/{id}")
	public Optional<User> findById(@PathVariable Long id) {
		 Optional<User> findOne = this.userRepository.findById(id);
		return findOne;
	}
}

編寫啟動類

package com.etoak;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;


@SpringBootApplication
public class App extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(App.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(App.class, args);
    }
}

編寫配置檔案application.properties

server.port=8000
spring.jpa.generate-ddl=false
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
#指定資料來源型別
spring.datasource.platform=h2
##指定h2資料庫的建表指令碼
spring.datasource.schema=classpath:user.sql
##指定h2資料庫的資料指令碼
spring.datasource.data=classpath:data.sql

#配置日誌級別,讓hibernate列印執行的SQL
logging.level.root=INFO
logging.level.org.hibernate=INFO
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
logging.level.org.hibernate.type.descriptor.sql.BasicExtractor=TRACE

啟動啟動類,訪問http://localhost:8000/1測試
在這裡插入圖片描述