新建模块
我一向喜欢简化操作,只需以下几步,便可创建自己的服务模块,以下步骤为构建一个模块的最小化流程。
# Step1 新建Maven模块
在fish-modules
模块下新建个Maven模块,命名为fish-example
,建议选择fish-modules(fish-业务组件)为父模块,即直接在fish-modules文件夹上右键添加新模块。
# Step2 导入需要使用的模块
最基础的模块,建议选用以下模块
- cloud-nacos (必选,否则无法接入Nacos)
- alter-mvc
- alter-jpa
- alter-mysql
- alter-redis
- alter-security(视情况而定)
- feign-clients(远程调用其他模块的组件,已包含在fish-common中) 在pom.xml中添加如下内容:
<dependency>
<groupId>cn.lyn4ever</groupId>
<artifactId>cloud-nacos</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>cn.lyn4ever</groupId>
<artifactId>fish-common</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>cn.lyn4ever</groupId>
<artifactId>alter-mvc</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>cn.lyn4ever</groupId>
<artifactId>alter-jpa</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>cn.lyn4ever</groupId>
<artifactId>alter-mysql</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>cn.lyn4ever</groupId>
<artifactId>alter-redis</artifactId>
<version>1.0.0</version>
</dependency>
<!-- security模块,可选-->
<dependency>
<groupId>cn.lyn4ever</groupId>
<artifactId>alter-security</artifactId>
<version>1.0.0</version>
</dependency>
# Step2.1 不使用SpringSecurity
无需做任何操作
# Step2.2 使用SpringSecurity
如果想使用SpringSecurity功能,导入alter-security模块,然后实现一个CloudUserService 接口即可。其中loadUserByUsername
方法需要远程调用system-admin模块获取。
@Component
@RequiredArgsConstructor
public class ExampleUserDetailService implements CloudUserDetailService {
private final SysUserClientService sysUserClientService;
/**
* 从token中解析用户信息
* 这里直接返回一个new Object() 值。
* @param token
*/
@Override
public Object resolveUserByToken(String token) {
// return sysUserClientService.resolveUserByToken(token);
return new Object();
}
/**
* 根据用户名获取用户信息
* 远程调用system-admin模块获取内容
* @param username
*/
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
UserDetails userDetails = sysUserClientService.loadUserByUsername(username);
return userDetails;
}
}
# Step3 添加SpringBoot配置文件
编辑application.yaml文件,添加对应的配置,必须设置属性spring.application.name
,否则无法注册到Nacos中。
```yaml
server:
port: 9014 # web端口
spring:
application:
name: fish-example
其次在Step2中选择了哪些模块就需要添加对应的配置文件,对应关系如下:
- alter-mysql
spring:
datasource:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://localhost:3306/eladmindb?serverTimezone=Asia/Shanghai
username: root
password: 123456
- alter-redis
spring:
redis:
#数据库索引
database: 1
host: 127.0.0.1
port: 6379
password:
最终的配置文件如下所示,其中MySQL和Redis根据自己情况修改。
# Step4 写一个测试接口
为了测试连通性,添加一个测试接口,代码如下。
- 如果引入了alter-security模块,在这里需要添加
@AnonymousAccess
注解放行接口。
@RestController
@RequiredArgsConstructor
@RequestMapping("/test")
public class ExampleHelloController {
@GetMapping(value = "/echo/{text}")
public String echo(@PathVariable("text") String text) {
return "欢迎使用Fish-Cloud项目:" + text;
}
}
# Step5 配置SpringBoot启动类
在模块启动类上添加@EnableDiscoveryClient
注解,让其注册到Nacos中。然后点击运行FishExampleService类,启动模块。
@SpringBootApplication
@EnableDiscoveryClient # 服务发现
public class FishExampleService {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(FishExampleService.class);
springApplication.run(args);
}
}
# Step6 配置网关转发
在cloud-gateway的配置文件中的spring.cloud.gateway.routes
中添加路由,修改完配置文件后需要重启cloud-gateway模块。
spring:
cloud:
gateway:
routes: # routes 说明内容是一个数组,- 就表示数组
- id: fish_example
uri: lb://fish-example
predicates:
- Path=/example/**
# Step7 测试接口连通性
注意这里的接口是利用网关进行访问的,而不是直接访问fish-example服务,因此url地址为:网关地址+路由地址+接口地址。
- 网关地址:http://localhost:9000
- 路由地址:example
- 接口地址:test/echo/你好
curl http://localhost:9000/example/test/echo/你好
# 欢迎使用Fish-Cloud项目:你好
上次更新: 2023/10/26, 11:34:42