开发环境
STS4、Maven3.8.4、Java8
编写服务提供者
新建Maven工程
完成之后删除其它包
新建服务提供者
新建SpringBoot项目
添加依赖
修改pom.xml文件为:
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>top.feng</groupId>
<artifactId>microservice-spring-cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>microservice-spring-cloud</name>
<modules>
<module>microservice-provider-user</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.8</version>
<relativePath/>
</parent>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
之后导入项目
在资产文件下编写shema和data数据文件
schema.sql
drop table if exists users;
create table users(
id bigint generated by default as identity,
username varchar(40),
name varchar(20),
age int,
balance decimal(10,2),
primary key(id)
);
data.sql
insert into users(id, username, name, age, balance) values (1, 'user1', '张三', 20, 100.00);
insert into users(id, username, name, age, balance) values (2, 'user2', '李四', 20, 100.00);
insert into users(id, username, name, age, balance) values (3, 'user3', '王五', 20, 100.00);
insert into users(id, username, name, age, balance) values (4, 'user4', '马六', 20, 100.00);
编写实体类User
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column
private String username;
@Column
private String name;
@Column
private Short age;
@Column
private BigDecimal balance;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Short getAge() {
return age;
}
public void setAge(Short age) {
this.age = age;
}
public BigDecimal getBalance() {
return balance;
}
public void setBalance(BigDecimal balance) {
this.balance = balance;
}
}
UserRepository,实现对Jpa的支持
public interface UserRepository extends JpaRepository<User, Long> {
}
编写controller
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/simple/{id}")
public User findById(@PathVariable Long id) {
return userRepository.findById(id).get();
}
}
application.xml的配置
server:
port: 7900
spring:
jpa:
generate-ddl: false
show-sql: true
hibernate:
ddl-auto: none
datasource:
url: jdbc:h2:mem:test
driver-class-name: org.h2.Driver
username: sa
password:
h2:
console:
enabled: true
path: /h2
application:
name: microservice-provider-user
logging:
level:
root: info
org.hibernate.type.descriptor.sql.BasicBinder: trace
org.hibernate.type.descriptor.sql.BasicExtractor: trace
'[top.feng.springcloud]': debug
启动后如下
新建服务提供者
用以上方式创建
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>top.feng.cloud</groupId>
<artifactId>microservice-spring-cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>microservice-consumer-movie</artifactId>
<name>microservice-consumer-movie</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
整合后如下
新建实体类
public class User {
private Long id;
private String username;
private String name;
private Short age;
private BigDecimal balance;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Short getAge() {
return age;
}
public void setAge(Short age) {
this.age = age;
}
public BigDecimal getBalance() {
return balance;
}
public void setBalance(BigDecimal balance) {
this.balance = balance;
}
}
编写Controller
@RestController
public class MovieController {
@Autowired
private RestTemplate restTemplate;
@Value("${user.userServicePath}")
private String userServicePath;
@GetMapping("/movie/{id}")
public User findById(@PathVariable Long id) {
return restTemplate.getForObject(userServicePath + "simple/" + id, User.class);
}
}
application.yaml的配置
server:
port: 7910
user:
userServicePath: 'http://localhost:7900/'
结果
总结
使用Maven构建模块化工程,之后编写数据文件schema.sql和data.sql,之后进行服务提供者的编码开发。成功后进行服务消费者的开发。至此一个简单的服务提供者和服务消费者demo编写成功。