1、创建父项目
创建一个jdk为1.8的maven空项目
2、删除src文件夹
因为是父项目,只需要pom.xml即可
3、在pom.xml中导入依赖
导入springcloud依赖和springboot依赖的版本一定要对应
版本查看可以参考这篇博客:SpringCloud学习(一)—概念_再小的帆也能远航啊的博客-CSDN博客
下面是pom文件内容
4.0.0
com.zlt
springcloud02
1.0-SNAPSHOT
springcloud-api
springcloud-provider-dept-8003
springcloud-consumer-dept-80
pom
8
8
4.12
1.16.10
org.springframework.cloud
spring-cloud-dependencies
Greenwich.SR1
pom
import
org.springframework.boot
spring-boot-dependencies
2.1.4.RELEASE
pom
import
mysql
mysql-connector-java
5.1.47
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2
junit
junit
${junit.version}
test
org.projectlombok
lombok
${lombok.version}
log4j
log4j
1.2.12
4、创建子项目:api,也是一个普通的maven项目
创建一个数据库,数据库里创建一个表,然后在项目中创建一个pojo包,包内创建一个实体类对应数据库的表。
数据表
实体类
@Data //get、set、toString方法
@AllArgsConstructor//全部参数的构造方法
@NoArgsConstructor//无参构造方法
@Accessors(chain = true)//开启链式书写
public class RUser implements Serializable {
private Long id;
private String nickname;
private String password;
private String head;
}
pom.xml
springcloud02
com.zlt
1.0-SNAPSHOT
4.0.0
springcloud-api
8
8
org.projectlombok
lombok
api子项目只是提供实体类的一个项目
5、再创建一个子项目:服务的提供者
创建方式同上
添加依赖,pom文件
导入了api的项目,因为需要用到api的pojo类
springcloud02
com.zlt
1.0-SNAPSHOT
4.0.0
springcloud-provider-dept-8003
8
8
com.zlt
springcloud-api
1.0-SNAPSHOT
junit
junit
test
mysql
mysql-connector-java
org.mybatis.spring.boot
mybatis-spring-boot-starter
org.springframework.boot
spring-boot-test
org.springframework.boot
spring-boot-starter-web
配置application文件
server:
port: 8003
mybatis:
type-aliases-package: com.zlt.springcloud.pojo
mapper-locations: classpath:mapper/*.xml
spring:
application:
name: springcloud-provider-dept
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/rabbit?
username: root
password: root
hikari:
pool-name: DateHikariCP
minimum-idle: 5
idle-timeout: 1800000
maximum-pool-size: 10
auto-commit: true
max-lifetime: 18000000
connection-timeout: 30000
分别创建mapper、service、serviceimpl、controller层
mapper
@Mapper
@Repository
public interface RUserMapper {
@Select("select * from r_user")
List getlist();
}
service
public interface RUserService {
List getlist();
}
serviceimpl
@Service
public class RUserServiceImpl implements RUserService {
@Autowired
RUserMapper rUserMapper;
@Override
public List getlist() {
return rUserMapper.getlist();
}
}
controller
@RestController
public class RUserController {
@Autowired
RUserService rUserService;
@GetMapping("/dept/getlist")
public List getlist(){
return rUserService.getlist();
}
}
启动类
@SpringBootApplication
public class DeptProvider_8003 {
public static void main(String[] args) {
SpringApplication.run(DeptProvider_8003.class,args);
}
}
启动项目,访问查询接口
6、创建子项目:springcloud-consumer-dept-80
引入依赖,pom文件如下
springcloud02
com.zlt
1.0-SNAPSHOT
4.0.0
springcloud-consumer-dept-80
8
8
org.springframework.boot
spring-boot-starter-web
com.zlt
springcloud-api
1.0-SNAPSHOT
配置application.yml文件
server:
port: 80
需要通过RestTemple访问服务者提供的接口,所以要把RestTemple配置给spring管理
@Configuration
public class ConfigBean {
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
controller层
@RestController
public class RUserConsumerController {
//消费者,不应该有service层
//通过ReatTemplate直接调用接口。
//方法(url,实体:Map,ClassresponseType)
@Autowired
private RestTemplate restTemplate;
private static final String REST_URL_PERFIX = "http://localhost:8003";
@RequestMapping("/consumer/getlist")
public List get(){
return restTemplate.getForObject(REST_URL_PERFIX+"/dept/getlist",List.class);
}
}
启动类
@SpringBootApplication
public class DeptConsumer_80 {
public static void main(String[] args) {
SpringApplication.run(DeptConsumer_80.class,args);
}
}
启动服务类,再启动消费类,然后进行测试:localhost/consumer/getlist
发现无法访问,可能是80端口已经被占用,在application.yml中把端口号给为8004
重启服务,访问:http://localhost:8004/consumer/getlist ,即可访问成功