创建第一个SpringCloud项目
1、创建父项目
- 打开IDEA
- 创建新项目
创建一个jdk为1.8的maven空项目
2、删除src文件夹
因为是父项目,只需要pom.xml即可
3、在pom.xml中导入依赖
导入springcloud依赖和springboot依赖的版本一定要对应
版本查看可以参考这篇博客:SpringCloud学习(一)—概念_再小的帆也能远航啊的博客-优快云博客
下面是pom文件内容
<?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>com.zlt</groupId>
<artifactId>springcloud02</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>springcloud-api</module>
<module>springcloud-provider-dept-8003</module>
<module>springcloud-consumer-dept-80</module>
</modules>
<!--打包方式 pom-->
<packaging>pom</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<junit.version>4.12</junit.version>
<lombok.version>1.16.10</lombok.version>
</properties>
<dependencyManagement>
<dependencies>
<!--spring-cloud依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--springboot依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--mysql数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--springboot启动器-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--单元测试 junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!--lombok依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<!--日志log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
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
<?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>springcloud02</artifactId>
<groupId>com.zlt</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>
api子项目只是提供实体类的一个项目
服务提供者
5、再创建一个子项目:服务的提供者
创建方式同上
添加依赖,pom文件
导入了api的项目,因为需要用到api的pojo类
<?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>springcloud02</artifactId>
<groupId>com.zlt</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>springcloud-provider-dept-8003</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.zlt</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>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>
</dependencies>
</project>
配置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<RUser> getlist();
}
service
public interface RUserService {
List<RUser> getlist();
}
serviceimpl
@Service
public class RUserServiceImpl implements RUserService {
@Autowired
RUserMapper rUserMapper;
@Override
public List<RUser> getlist() {
return rUserMapper.getlist();
}
}
controller
@RestController
public class RUserController {
@Autowired
RUserService rUserService;
@GetMapping("/dept/getlist")
public List<RUser> 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文件如下
<?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>springcloud02</artifactId>
<groupId>com.zlt</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.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.zlt</groupId>
<artifactId>springcloud-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
配置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,Class<T>responseType)
@Autowired
private RestTemplate restTemplate;
private static final String REST_URL_PERFIX = "http://localhost:8003";
@RequestMapping("/consumer/getlist")
public List<RUser> 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 ,即可访问成功