核心依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.1.RELEASE</version> </dependency> <!-- Feign组件 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.1.3.RELEASE</version> </dependency>这里也可以基于Feign模式,访问上述服务端提供的接口服务 。
基于Rest接口访问
提供接口配置
@Configuration public class RestConfig { @LoadBalanced @Bean public RestTemplate restTemplate() { return new RestTemplate(); } }这里用法和SpringCloud原生框架生态相同 。
请求方法
@RestController public class ClientWeb { @Resource private RestTemplate restTemplate ; @RequestMapping(value = "/web/getMsgV1/{name}",method = RequestMethod.GET) public String getMsgV1 (@PathVariable String name){ String reqUrl = "http://node08-nacos-server:8001/web/getMsg/"+name ; return restTemplate.getForObject(reqUrl,String.class) ; } }基于Feign接口访问
Feign接口配置
@FeignClient("node08-nacos-server") public interface MsgFeign { @GetMapping("/web/getMsg") String getMsg (@RequestParam(name = "name") String name); }这里用法依旧和SpringCloud原生框架生态相同 。
请求方法
@RestController public class ClientWeb { @Resource private MsgFeign msgFeign ; @RequestMapping(value = "/web/getMsgV2/{name}",method = RequestMethod.GET) public String getMsgV2 (@PathVariable String name){ return msgFeign.getMsg(name) ; } }启动类配置
@SpringBootApplication @EnableDiscoveryClient @EnableFeignClients(basePackages={"cloud.nacos.client.feign"}) public class ApplicationClient { public static void main(String[] args) { SpringApplication.run(ApplicationClient.class,args) ; } } 三、配置中心管理通过Nacos的配置管理可以将整合架构体系内配置,集中统一在Nacos中存储管理。分离的多环境配置,灵活的权限管理。
1、核心依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.1.1.RELEASE</version> </dependency> 2、服务端配置 spring: application: name: node08-nacos-server cloud: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: 127.0.0.1:8848 file-extension: yaml这里的核心配置是config配置。
3、配置读取方式这里就是Spring框架原生的读取方式。
@RestController @RefreshScope public class ValueWeb { @Value("${my.name:}") private String myName ; @Value("${my.info:}") private String myInfo ; @RequestMapping("/getNameInfo") public String getNameInfo (){ return myName+":"+myInfo ; } } 4、数据库连接配置JDBC连接
这里基于Druid连接池,配置JdbcTemplate数据库访问API。
@Configuration public class DruidConfig { @Value("${spring.datasource.druid.url}") private String dbUrl; @Value("${spring.datasource.druid.username}") private String username; @Value("${spring.datasource.druid.password}") private String password; @Value("${spring.datasource.druid.driverClassName}") private String driverClassName; /** * Druid 连接池配置 */ @Bean public DruidDataSource dataSource() { DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(dbUrl); datasource.setUsername(username); datasource.setPassword(password); datasource.setDriverClassName(driverClassName); return datasource; } /** * JDBC操作配置 */ @Bean(name = "jdbcTemplate") public JdbcTemplate jdbcTemplate (@Autowired DruidDataSource dataSource){ return new JdbcTemplate(dataSource) ; } }测试方法
@RestController public class JdbcWeb { @Resource private JdbcTemplate jdbcTemplate ; @RequestMapping("/getJdbc") public List<String> getJdbc (){ String sql = "select phone from d_phone" ; List<String> phoneEntityList = jdbcTemplate.queryForList(sql,String.class) ; return phoneEntityList ; } } 四、案例总结上面两个使用案例走下来,感觉和原生SpringCloud的用法区别不大,整体上手难度也不太高,毕竟AlibabaCloud框架是在SpringCloud框架基础上。适配了阿里很多开源组件,在微服务框架组件选择上,根据业务需求和团队的熟悉程序选择即可。
五、源代码地址 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-cloud-base GitEE地址:知了一笑 https://gitee.com/cicadasmile/spring-cloud-base