SpringCloud之基礎例項之服務端
阿新 • • 發佈:2018-11-19
本文章總結摘錄的《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測試