spring cloud 第 3 篇 服务提供者与服务消费者

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.itmuch.cloud</groupId>

              <artifactId>microservice-simple-provider-user</artifactId>

              <version>0.0.1-SNAPSHOT</version>

              <packaging>jar</packaging>

              <name>microservice-simple-provider-user</name>

              <description>Demo project for Spring Boot</description>

              <parent>

                            <groupId>org.springframework.boot</groupId>

                            <artifactId>spring-boot-starter-parent</artifactId>

                            <version>1.4.1.RELEASE</version>

                            <relativePath/>

              </parent>

              <properties>

                            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

                            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

                            <java.version>1.8</java.version>

              </properties>

              <dependencies>

                            <dependency>

                                          <groupId>org.springframework.boot</groupId>

                                          <artifactId>spring-boot-starter-data-jpa</artifactId>

                            </dependency>

                            <dependency>

                                          <groupId>org.springframework.boot</groupId>

                                          <artifactId>spring-boot-starter-web</artifactId>

                            </dependency>

                            <dependency>

                                          <groupId>com.h2database</groupId>

                                          <artifactId>h2</artifactId>

                                          <scope>runtime</scope>

                            </dependency>

                            <dependency>

                                          <groupId>org.springframework.boot</groupId>

                                          <artifactId>spring-boot-starter-test</artifactId>

                                          <scope>test</scope>

                            </dependency>

                            <dependency>

                                          <groupId>org.springframework.boot</groupId>

                                          <artifactId>spring-boot-starter-data-solr</artifactId>

                            </dependency>

              </dependencies>

              <build>

                            <plugins>

                                          <plugin>

                                                        <groupId>org.springframework.boot</groupId>

                                                        <artifactId>spring-boot-maven-plugin</artifactId>

                                          </plugin>

                            </plugins>

              </build>

</project>

配置文件

Application.yml

server:

  port: 7900

spring:

  jpa:

    generate-ddl: false

    show-sql: true

    hibernate:

      ddl-auto: none

  datasource:

    platform: h2

    schema: classpath:schema.sql

    data: classpath:data.sql

logging:

  level:

    root: INFO

    org.hibernate: INFO

    org.hibernate.type.descriptor.sql.BasicBinder: TRACE

    org.hibernate.type.descriptor.sql.BasicExtractor: TRACE

    com.itmuch: DEBUG

data.sql

insert into user(id,username, name, age, balance) values(1,'user1', '张三', 20, 100.00);

insert into user(id,username, name, age, balance) values(2,'user2', '李四', 20, 100.00);

insert into user(id,username, name, age, balance) values(3,'user3', '王五', 20, 100.00);

insert into user(id,username, name, age, balance) values(4,'user4', '马六', 20, 100.00);

schema.sql

drop table user if exists;

create table user(

              id bigint generated by default as identity,

              username varchar(40),

              name varchar(20),

              age int(3),

              balance decimal(10,2),

              primary key(id)

);

代码

Controller

@RestController

public class UserController {

    @Autowired

    private UserRepository userRepository;

    @GetMapping("/simple/{id}")

    public User findById(@PathVariable Long id) {

        return this.userRepository.findOne(id);

    }

}

Entity

/**

 * spring data jpa 需要添加一些,jpa的注解

 */

@Entity

public class User {

    @Id

    @GeneratedValue(strategy = GenerationType.AUTO)

    private Long id;

    @Column

    private String username;

    @Column

    private String name;

    @Column

    private Short age;

    @Column

    private BigDecimal balance;

    public Long getId() {

        return this.id;

    }

    public void setId(Long id) {

        this.id = id;

    }

    public String getUsername() {

        return this.username;

    }

    public void setUsername(String username) {

        this.username = username;

    }

    public String getName() {

        return this.name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public Short getAge() {

        return this.age;

    }

    public void setAge(Short age) {

        this.age = age;

    }

    public BigDecimal getBalance() {

        return this.balance;

    }

    public void setBalance(BigDecimal balance) {

        this.balance = balance;

    }

}

Repository

@Repository

public interface UserRepository extends JpaRepository<User, Long> {

}

启动文件

@SpringBootApplication

public class MicroserviceSimpleProvideUserApplication {

              public static void main(String[] args) {

                            SpringApplication.run(MicroserviceSimpleProvideUserApplication.class, args);

              }

}

实现消费者

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.itmuch.cloud</groupId>

              <artifactId>microservice-simple-consumer-movie</artifactId>

              <version>0.0.1-SNAPSHOT</version>

              <packaging>jar</packaging>

              <name>microservice-simple-provider-user</name>

              <description>Demo project for Spring Boot</description>

              <parent>

                            <groupId>org.springframework.boot</groupId>

                            <artifactId>spring-boot-starter-parent</artifactId>

                            <version>1.4.1.RELEASE</version>

                            <relativePath/>

              </parent>

              <properties>

                            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

                            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

                            <java.version>1.8</java.version>

              </properties>

              <dependencies>

                            <dependency>

                                          <groupId>org.springframework.boot</groupId>

                                          <artifactId>spring-boot-starter-web</artifactId>

                            </dependency>

                            <dependency>

                                          <groupId>org.springframework.boot</groupId>

                                          <artifactId>spring-boot-starter-test</artifactId>

                                          <scope>test</scope>

                            </dependency>

              </dependencies>

              <build>

                            <plugins>

                                          <plugin>

                                                        <groupId>org.springframework.boot</groupId>

                                                        <artifactId>spring-boot-maven-plugin</artifactId>

                                          </plugin>

                            </plugins>

              </build>

</project>

配置文件

Application.yml

server:

  port: 7901

代码

Controller

@RestController

public class MovieController

{

    @Autowired

    private RestTemplate restTemplate;

    @GetMapping("/movie/{id}")

    public User findUserById(@PathVariable("id") Long id){

        return restTemplate.getForObject("http://localhost:7900/simple/"+id,User.class);

    }

}

Entity

public class User {

    private Long id;

    private String username;

    private String name;

    private Short age;

    private BigDecimal balance;

    public Long getId() {

        return this.id;

    }

    public void setId(Long id) {

        this.id = id;

    }

    public String getUsername() {

        return this.username;

    }

    public void setUsername(String username) {

        this.username = username;

    }

    public String getName() {

        return this.name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public Short getAge() {

        return this.age;

    }

    public void setAge(Short age) {

        this.age = age;

    }

    public BigDecimal getBalance() {

        return this.balance;

    }

    public void setBalance(BigDecimal balance) {

        this.balance = balance;

    }

}

启动文件

@SpringBootApplication

public class MicroserviceSimpleProvideUserApplication {

              @Bean

              public RestTemplate restTemplate() {

                            return new RestTemplate();

              }

              public static void main(String[] args) {

                            SpringApplication.run(MicroserviceSimpleProvideUserApplication.class, args);

              }

}

问题:

题一:Ip如果发生变化呢?所以硬编码是行不通的

方案一:放在配置文件中

但是还需要配置,维护量还是很大的

题二:服务器非常多时候,怎么做到负载?

git hub:   https://github.com/wangrui0

qq邮箱:[email protected]

猜你喜欢

转载自blog.csdn.net/qq_35524586/article/details/83280121