微服务架构rest模拟环境搭建
Rest环境搭建:服务提供者 springcloud主模块pom.xml springcloud-api模块 springcloud-provider-dept-8001服务提供模块
Rest环境服务消费者
Rest环境搭建:服务提供者
springcloud主模块pom.xml
<?xml version="1.0" encoding="UTF-8"?>
< 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> org.example</ groupId>
< artifactId> springCloud</ artifactId>
< version> 1.0-SNAPSHOT</ version>
< packaging> pom</ packaging>
< properties>
< project.build.sourceEncoding> UTF-8</ project.build.sourceEncoding>
< maven.compiler.source> 8</ maven.compiler.source>
< maven.compiler.target> 8</ maven.compiler.target>
< junit.version> 4.12</ junit.version>
< log4j.version> 1.2.17</ log4j.version>
</ properties>
< dependencyManagement>
< dependencies>
< dependency>
< groupId> org.springframework.cloud</ groupId>
< artifactId> spring-cloud-dependencies</ artifactId>
< version> Greenwich.SR1</ version>
< type> pom</ type>
< scope> import</ scope>
</ dependency>
< dependency>
< groupId> org.springframework.boot</ groupId>
< artifactId> spring-boot-dependencies</ artifactId>
< version> 2.1.4.RELEASE</ version>
< type> pom</ type>
< scope> import</ scope>
</ dependency>
< dependency>
< groupId> mysql</ groupId>
< artifactId> mysql-connector-java</ artifactId>
< version> 5.1.6</ version>
</ dependency>
< dependency>
< groupId> com.alibaba</ groupId>
< artifactId> druid</ artifactId>
< version> 1.2.6</ version>
</ dependency>
< dependency>
< groupId> org.mybatis.spring.boot</ groupId>
< artifactId> mybatis-spring-boot-starter</ artifactId>
< version> 1.3.1</ version>
</ dependency>
< dependency>
< groupId> org.projectlombok</ groupId>
< artifactId> lombok</ artifactId>
</ dependency>
< dependency>
< groupId> junit</ groupId>
< artifactId> junit</ artifactId>
< version> ${junit.version}</ version>
< scope> test</ scope>
</ dependency>
< dependency>
< groupId> log4j</ groupId>
< artifactId> log4j</ artifactId>
< version> ${log4j.version}</ version>
</ dependency>
< dependency>
< groupId> ch.qos.logback</ groupId>
< artifactId> logbck-core</ artifactId>
< version> 1.2.3</ version>
</ dependency>
</ dependencies>
</ dependencyManagement>
< build>
</ build>
</ project>
springcloud-api模块
<?xml version="1.0" encoding="UTF-8"?>
< 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" >
< parent>
< artifactId> springCloud</ artifactId>
< groupId> org.example</ groupId>
< version> 1.0-SNAPSHOT</ version>
</ parent>
< modelVersion> 4.0.0</ modelVersion>
< artifactId> springcloud-api</ artifactId>
< properties>
< maven.compiler.source> 8</ maven.compiler.source>
< maven.compiler.target> 8</ maven.compiler.target>
</ properties>
< dependencies>
< dependency>
< groupId> org.projectlombok</ groupId>
< artifactId> lombok</ artifactId>
</ dependency>
</ dependencies>
</ project>
@Data
@NoArgsConstructor
@Accessors ( chain = true )
public class Dept implements Serializable {
private static final long serialVersionUID = - 4073709727912930186L ;
private long deptNo;
private String dName;
private String dbSource;
public Dept ( String dName) {
this . dName = dName;
}
}
springcloud-provider-dept-8001服务提供模块
<?xml version="1.0" encoding="UTF-8"?>
< 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" >
< parent>
< artifactId> springCloud</ artifactId>
< groupId> org.example</ groupId>
< version> 1.0-SNAPSHOT</ version>
</ parent>
< modelVersion> 4.0.0</ modelVersion>
< artifactId> springcloud-provider-dept-8001</ artifactId>
< properties>
< maven.compiler.source> 8</ maven.compiler.source>
< maven.compiler.target> 8</ maven.compiler.target>
</ properties>
< dependencies>
< dependency>
< groupId> org.example</ groupId>
< artifactId> springcloud-api</ artifactId>
< version> 1.0-SNAPSHOT</ version>
</ dependency>
< dependency>
< groupId> junit</ groupId>
< artifactId> junit</ artifactId>
< scope> test</ scope>
</ dependency>
< dependency>
< groupId> mysql</ groupId>
< artifactId> mysql-connector-java</ artifactId>
</ dependency>
< dependency>
< groupId> com.alibaba</ groupId>
< artifactId> druid</ artifactId>
</ dependency>
< dependency>
< groupId> ch.qos.logback</ groupId>
< artifactId> logback-core</ artifactId>
</ dependency>
< dependency>
< groupId> org.mybatis.spring.boot</ groupId>
< artifactId> mybatis-spring-boot-starter</ artifactId>
</ dependency>
< dependency>
< groupId> org.springframework.boot</ groupId>
< artifactId> spring-boot-test</ artifactId>
</ dependency>
< dependency>
< groupId> org.springframework.boot</ groupId>
< artifactId> spring-boot-starter-web</ artifactId>
</ dependency>
< dependency>
< groupId> org.springframework.boot</ groupId>
< artifactId> spring-boot-devtools</ artifactId>
</ dependency>
< dependency>
< groupId> log4j</ groupId>
< artifactId> log4j</ artifactId>
</ dependency>
</ dependencies>
</ project>
配置相关
server :
port : 8001
mybatis :
type-aliases-package : com.api.model
mapper-locations : classpath: mybatis/mapper/*.xml
config-location : classpath: mybatis/mybatis- config.xml
spring :
application :
name : springcloud- provider- dept
datasource :
type : com.alibaba.druid.pool.DruidDataSource
driver-class-name : org.gjt.mm.mysql.Driver
url : jdbc: mysql: //localhost: 3306/iwmstest? useUnicode=true&characterEncoding=UTF- 8
username : root
password : 123456
<?xml version="1.0" encoding="UTF-8"?>
<! DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd" >
< configuration>
< settings>
< setting name = " cacheEnabled" value = " true" />
< setting name = " lazyLoadingEnabled" value = " true" />
< setting name = " multipleResultSetsEnabled" value = " true" />
< setting name = " useColumnLabel" value = " true" />
< setting name = " defaultExecutorType" value = " REUSE" />
< setting name = " defaultStatementTimeout" value = " 25000" />
< setting name = " logImpl" value = " STDOUT_LOGGING" />
< setting name = " logImpl" value = " LOG4J" />
< setting name = " callSettersOnNulls" value = " true" />
</ settings>
</ configuration>
<?xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
< mapper namespace = " com.provider.dao.DeptDao" >
< resultMap id = " BaseResultMap" type = " com.api.model.Dept" >
< id column = " dept_no" property = " deptNo" jdbcType = " BIGINT" />
< result column = " dname" property = " dName" jdbcType = " VARCHAR" />
< result column = " db_source" property = " dbSource" jdbcType = " VARCHAR" />
</ resultMap>
< select id = " queryById" resultMap = " BaseResultMap" parameterType = " long" >
select *from dept where dept_no=#{deptNo,jdbcType=BIGINT}
</ select>
< insert id = " addDept" parameterType = " com.api.model.Dept" >
insert into dept(dname, db_source)
values (#{dName},database())
</ insert>
< select id = " queryAll" resultMap = " BaseResultMap" resultType = " com.api.model.Dept" >
select *from dept
</ select>
</ mapper>
Rest环境服务消费者
<?xml version="1.0" encoding="UTF-8"?>
< 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" >
< parent>
< artifactId> springCloud</ artifactId>
< groupId> org.example</ groupId>
< version> 1.0-SNAPSHOT</ version>
</ parent>
< modelVersion> 4.0.0</ modelVersion>
< artifactId> springcloud-consumer-dept-80</ artifactId>
< properties>
< maven.compiler.source> 8</ maven.compiler.source>
< maven.compiler.target> 8</ maven.compiler.target>
</ properties>
< dependencies>
< dependency>
< groupId> org.example</ groupId>
< artifactId> springcloud-api</ artifactId>
< version> 1.0-SNAPSHOT</ version>
</ dependency>
< dependency>
< groupId> org.springframework.boot</ groupId>
< artifactId> spring-boot-starter-web</ artifactId>
</ dependency>
< dependency>
< groupId> org.springframework.boot</ groupId>
< artifactId> spring-boot-devtools</ artifactId>
</ dependency>
</ dependencies>
</ project>
server:
port: 80
Java编写
config配置类 配置RestTemplate 的bin
@Configuration
public class ConfigBean {
@Bean
public RestTemplate getRestTemplate ( ) {
return new RestTemplate ( ) ;
}
}
@RestController
public class DeptConsumerController {
@Autowired
private RestTemplate restTemplate;
private static final String RESET_URL_PREFIX = "http://localhost:8001" ;
@GetMapping ( "/consumer/dept/{deptNo}" )
public Dept get ( @PathVariable ( "deptNo" ) Long deptNo) {
return restTemplate. getForObject ( RESET_URL_PREFIX + "/dept/" + deptNo, Dept . class ) ;
}
@GetMapping ( "/consumer/list" )
public List < Dept > queryAll ( ) {
return restTemplate. getForObject ( RESET_URL_PREFIX + "/dept/queryAll" , List . class ) ;
}
@PostMapping ( "/consumer/dept/add" )
public boolean add ( @RequestBody Dept dept) {
return restTemplate. postForObject ( RESET_URL_PREFIX + "/dept/add" , dept, Boolean . class ) ;
}
}