搭建springcloud的服务发现,简单的先测试一下是否能够调动
在taosir-common下建立公共的api接口
package cn.taosir.service.dreamHouse; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; public interface UserService { /** * 测试用 * @return */ @RequestMapping(value="/user/test",method=RequestMethod.GET) String test(); }
我们使用taosir-dreamHouse作为服务提供者,首先处理依赖配置pom.xml
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Edgware.SR3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- 公共模块 --> <dependency> <groupId>cn.taosir</groupId> <artifactId>taosir-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!-- springcloud --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!-- database --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
这里将公共模块common引入,建立依赖关系,此外plugins的用意可参考随笔——springboot基于maven多聚合项目的打包
编写简单的服务类
package cn.taosir.dreamhouse.service; import cn.taosir.service.dreamHouse.UserService;
@RestController public class UserServiceImpl implements UserService{ @Override public String test() { return "Hello Taosir!"; } }
编写启动类
package cn.taosir.dreamhouse; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient public class DreamHouseStart { public static void main(String[] args) { SpringApplication.run(DreamHouseStart.class, args); } }
编写application.yml
spring:
application:
name: taosir-dreamHouse
eureka:
instance:
hostname: localhost
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
server:
port: 8762
logging:
level:
root: error
接下来编写服务消费者taosir-api
首先依然处理依赖配置pom.xml
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Edgware.SR3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- 公共模块 --> <dependency> <groupId>cn.taosir</groupId> <artifactId>taosir-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!-- springcloud --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
application.yml
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
server:
port: 8765
spring:
application:
name: taosir-api
logging:
level:
root: error
ribbon:
ConnectTimeout: 240000
ReadTimeout: 240000
编写服务接口
package cn.tao.api.service; import org.springframework.cloud.netflix.feign.FeignClient; import cn.taosir.service.dreamHouse.UserService; @FeignClient(name="taosir-dreamHouse") public interface UserServiceAPI extends UserService{ }
编写控制层
package cn.tao.api.controller.dreamhouse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import cn.tao.api.service.UserServiceAPI; @RestController public class UserController { @Autowired private UserServiceAPI userService; @RequestMapping(value="/test",method=RequestMethod.GET) public String test() { return userService.test(); } }
编写启动类
package cn.tao.api; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.feign.EnableFeignClients; @SpringBootApplication @EnableFeignClients @EnableEurekaClient public class ApiStart { public static void main(String[] args) { SpringApplication.run(ApiStart.class, args); } }
按顺序启动注册中心taosir-eureka,然后启动服务提供者taosir-dreamHouse,taosir-api