springcloud简单项目搭建

IDEA SpringCloud项目搭建

1.首先创建一个普通的maven项目用于管理依赖
2.使用创建数据库并使用idea连接数据库
3.导入POM依赖包,并根据数据库写出相应的API的module
<!--打包方式pom-->
<packaging>pom</packaging>

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

</dependencies>

这里的@Data 注解是set和get方法,@NoArgsConstructor 注解是无参构造,这两个注解都是上边依赖包中的。
@Data
@NoArgsConstructor
//链式编程注解
@Accessors
public class Dept implements Serializable {

    private Long deptno;
    private String dname;
    //一个服务对应一个数据库
    private String db_source;

    public Dept(Long deptno, String dname, String db_source) {
        this.deptno = deptno;
        this.dname = dname;
        this.db_source = db_source;
    }
}
4.写一个springcloud的重要组件eureka,相当于一个监控中心,项目名springcloud-eureka-7001

1.第一步导入pom依赖

//这个就是eureka的依赖,第二个是热部署
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
        <version>1.4.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>
</dependencies>

2.在resources下面配置application.yml,具体内容如下

server:
  port: 7001
eureka:
  instance:
    #eureka服务端的名字
    hostname: localhost
  client:
    #表示是否向服务中心注册自己
    register-with-eureka: false
    #表示自己为注册中心
    fetch-registry: false
    service-url:
      #监控页面
      defaultZone: http://localhost:7001/eureka/
@SpringBootApplication
//Eureka开启的注解
@EnableEurekaServer
public class EurekaServer_7001 {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServer_7001.class,args);
    }
}
启动类

http://localhost:7001/ 去访问
在这里插入图片描述

5.写一个服务提供者module–>(springcloud-provider-dept-8001),导入所需要的依赖
//把上面的API包拿到
<dependencies>
    <dependency>
        <groupId>com.wang</groupId>
        <artifactId>springcloud-api</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    //mysql驱动依赖拿到
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    //druid数据源依赖
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
    </dependency>
    //mybatis依赖
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
    </dependency>
    <!--监控中心服务的信息-->
    //这个目前还用不到
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    //热部署依赖
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>
    //相当与tomcat
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
    </dependency>
    //springcloud依赖中的EUREKA 注册中心依赖
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
        <version>1.4.6.RELEASE</version>
    </dependency>
</dependencies>

gen1.类似于mybatis实现增删改查操作,运行自己的controller保证自己的环境正常,可以运行。

2.重点在application.yml,全部内容如下

server:
  port: 8001
mybatis:
  type-aliases-package: com.wang.springcloud.pojo
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
spring:
  application:
    name: springcloud-provider-dept-8001
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db01?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: 123456
#配置eureka服务注入到监控中心
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/
  #修改注册中心名字
  instance:
    instance-id: springcloud-provider-dept8001
info:
  app.name: springcloud
  company.name: 中北大学

接下来启动7001,等待运行完,启动8001,可以看到,服务已经注册到了
在这里插入图片描述

接下来客户端怎么去在注册中心拿到服务呢?springcloud-consumer-dept-80

导入依赖

<!--eureka-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
        <version>1.4.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.wang</groupId>
        <artifactId>springcloud-api</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>
</dependencies>

```java
@Configuration
public class RestTemplatePro {

    @Bean
    //基于客户端实现负载均衡
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }



}
@RestController
public class DeptConsumerController {

    //消费者不应该有service层
    //RestTemplate 供我们直接调用
    @Autowired
    private RestTemplate restTemplate;//提供多种便捷访问远程http的方法
    //private static final String REST_URL_PREFIX = "http://localhost:8001";
    //获得项目的服务的名字,对应注册中心的名字
    private static final String REST_URL_PREFIX = "http://SPRINGCLOUD-PROVIDER-DEPT-8001";
    @RequestMapping("/consumer/dept/get/{id}")
    public Dept get(@PathVariable("id") long id){
        return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/"+id,Dept.class);
    }
    @RequestMapping("/consumer/dept/add")
    public boolean add(Dept dept){
        return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add",dept,boolean.class);
    }
    @RequestMapping("/consumer/dept/list")
    public List<Dept> list(){
        return restTemplate.getForObject(REST_URL_PREFIX+"/start",List.class);
    }

}

在配置一个启动类

@SpringBootApplication
@EnableEurekaClient
public class DeptConsumer_80 {
    public static void main(String[] args) {
        SpringApplication.run(DeptConsumer_80.class,args);
    }
}
server:
  port: 80

eureka:
  client:
    register-with-eureka: false
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/

端口号80 访问地址不用写
在这里插入图片描述
这里解释一下,你访问你原先的provider-service层是:locahost:8080/consumer/dept/list
如果没有注册中心的话,你的客户端(80)访问 locahost:/consumer/dept/list
private static final String REST_URL_PREFIX = “http://localhost:8001”;
restTemplate.getForObject(REST_URL_PREFIX+"/start",List.class);
这个方法就会执行,我觉得相当于是在服务端拿到的信息,客户端通过http获得服务端的信息
注册注册中心eureka,REST_URL_PREFIX,为了其他服务提供者使用,所以要修改名字。

											(随后还会继续更新springcloud的其他组件,负载均衡服务熔断降级,路由网关)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值