SpringCloud_IDEA

SpringCloud

开发环境:idea;mysql5.7及以上
技术方面:springMVC,springBoot,mybatis(sql), (hibernate HQL)
SpringCloud不是一个落地的技术,主要给我们提供的是各种解决方案(模块)
SpringBoot是正在落地后使用的技术(框架)
名称解释:
落地:项目中的具体模块功能搭建 添加 删除 修改 查询 各种检索功能分配等

作用

服务中心(注册):
Eureka,zookeeper(几乎淘汰),consul(几乎淘汰),nacos
服务调用:ribbon,loadbalancer(几乎淘汰),fegin,openFegin
服务降级:Hystrix,resilience4j(几乎淘汰),sentinel
服务网关:zuul,gateway
服务配置:config 服务总线:bus,nacos

配置IDEA

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

*.hprof;*.idea;*.iml;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.git;.hg;.svn;CVS;__pycache__;_svn;vssver.scc;vssver2.scc;

SpringCloud理解

在这里插入图片描述

创建项目

在这里插入图片描述

pom.xml配置

<?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>org.example</groupId>
  <artifactId>SpringCloudLearn</artifactId>
  <packaging>pom</packaging>
  <version>1.0-SNAPSHOT</version>



  <modules>
    <module>cloud_demo8001</module>
  </modules>

  <properties>
    <project.build.sourceEnconding>UTF-8</project.build.sourceEnconding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <junit.version>4.12</junit.version>
    <log4j.version>1.2.17</log4j.version>
    <lombok.version>1.2.17</lombok.version>
    <mysql.version>5.1.47</mysql.version>
    <druid.version>1.1.16</druid.version>
    <mybatis.spring.boot.version>1.3.8</mybatis.spring.boot.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <!--spring boot 2.2.2-->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.2.2.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>


      <!--spring cloud Hoxton.SR1-->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Hoxton.SR1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>



      <!--spring cloud alibaba 2.1.0.RELEASE-->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>2.2.0.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>



      <!-- MySql -->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>
      <!-- Druid -->
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>${druid.verison}</version>
      </dependency>
      <!-- mybatis-springboot整合 -->
      <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${mybatis.spring.boot.verison}</version>
      </dependency>
      <!--lombok-->
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
      </dependency>
      <!--junit-->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
      <!-- log4j -->
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>2.2.1.RELEASE</version>
        <configuration>
          <fork>true</fork>
          <addResources>true</addResources>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

在这里插入图片描述注:工程中的pom.xml并没有真正下载包,只是对包进行规范

搭建项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
pom.xml:

<?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">
    <parent>
        <artifactId>SpringCloudLearn</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloud_demo8001</artifactId>



    <dependencies>
        <!--        eureka-client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>

        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.17</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.18</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

    </dependencies>

</project>

在resources文件夹下创建File类型

在这里插入图片描述

在这里插入图片描述

server:
  port: 8001

spring:
  application:
    name: cloud-payment-service #服务名称
  zipkin:
    base-url: http://localhost:9411
    sleuth:
      sampler:
        probability: 1
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource  #当前数据源操作类型
    driver-class-name: org.gjt.mm.mysql.Driver
    url: jdbc:mysql://localhost:3306/cloud?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
    username: root
    password: root


mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.yangluyao.springcloud.entities  #所有entity别名所在包

补充,使用SpringCloud统一管理版本

项目的pom.xml:

<?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>org.example</groupId>
  <artifactId>SpringCloudLearn</artifactId>
  <packaging>pom</packaging>
  <version>1.0-SNAPSHOT</version>



  <modules>
    <module>cloud_demo8001</module>
    <module>cloud_demo8001</module>
  </modules>

  <properties>
    <project.build.sourceEnconding>UTF-8</project.build.sourceEnconding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <junit.version>4.12</junit.version>
    <log4j.version>1.2.17</log4j.version>
    <lombok.version>1.16.18</lombok.version>
    <mysql.version>5.1.47</mysql.version>
    <druid.version>1.1.17</druid.version>
    <mybatis.spring.boot.version>1.3.8</mybatis.spring.boot.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <!--spring boot 2.2.2-->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.2.2.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>


      <!--spring cloud Hoxton.SR1-->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Hoxton.SR1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>



      <!--spring cloud alibaba 2.1.0.RELEASE-->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>2.2.0.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>



      <!-- MySql -->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>
      <!-- Druid -->
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>${druid.verison}</version>
      </dependency>
      <!-- mybatis-springboot整合 -->
      <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${mybatis.spring.boot.verison}</version>
      </dependency>
      <!--lombok-->
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
      </dependency>
      <!--junit-->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
      <!-- log4j -->
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>2.2.1.RELEASE</version>
        <configuration>
          <fork>true</fork>
          <addResources>true</addResources>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

主要在properties中管理版本,下面都是引用,子项目中就可以不写版本号,更改版本时可以统一更改,维护性更强

模块书写顺序

1.创建application.xml文件

注意:若不是叶子图标,先看看eureka是否注入,再看FileTypes中的Text里面是否包含application.xml,若有则移除

server:
  port: 8001

spring:
  application:
    name: cloud-payment-service #服务名称
  zipkin:
    base-url: http://localhost:9411
    sleuth:
      sampler:
        probability: 1
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource  #当前数据源操作类型
    driver-class-name: org.gjt.mm.mysql.Driver
    url: jdbc:mysql://localhost:3306/cloud?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
    username: root
    password: root


mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.yangluyao.springcloud.entities  #所有entity别名所在包

在这里插入图片描述

2.搭建项目包

在java下创建包,mvc模式
在这里插入图片描述

3.创建实体类

有了lombok创建实体极其方便

package com.clouddemo.entities;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data                   //省略getter and setter代码
@AllArgsConstructor     //省略有参构造代码
@NoArgsConstructor      //省略无参构造代码
public class TabUsers {
    private String id;
    private String loginname;
    private String password;
    private String username;
}

4.创建dao,以及对应的mapper.xml

dao里面注意要有@Mapper注解
dao:

package com.clouddemo.dao;

import com.clouddemo.entities.TabUsers;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface TabUserDao {
    public List<TabUsers> findall();

}


mapper.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.clouddemo.dao.TabUserDao">

</mapper>

注意mapper.xml通过namespace来找到对应dao,点“.”的时候Idea会自动查询,找到直接回车即可

5.创建service和Impl

注意实现里要加@Service注解
service:

package com.clouddemo.service;

import com.clouddemo.entities.TabUsers;

import java.util.List;

public interface TabUsersService {
    public List<TabUsers> findall();
}


serviceImpl:

package com.clouddemo.service.Impl;

import com.clouddemo.dao.TabUserDao;
import com.clouddemo.entities.TabUsers;
import com.clouddemo.service.TabUsersService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class TabUsersServiceImpl implements TabUsersService {
    @Resource
    private TabUserDao dao;

    @Override
    public List<TabUsers> findall() {
        List<TabUsers> l=dao.findall();
        return l;
    }
}

注意这里不用@Autowired注解,而是采用源的方式(官方网站规定)

6.创建Controller

package com.clouddemo.controller;

import com.clouddemo.entities.TabUsers;
import com.clouddemo.service.TabUsersService;
import javafx.scene.control.Tab;
import lombok.extern.slf4j.Slf4j;

import net.minidev.json.JSONArray;

import net.minidev.json.JSONObject;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController //Controller注解
@Slf4j          //log4j日志注解
public class TabUsersController {
    @Resource
    private TabUsersService service;

    @GetMapping(value = "tab_users_findall")
    public String tab_users_findall() {
        JSONArray jsonArray=new JSONArray();
        List<TabUsers> list=service.findall();
        for (TabUsers t:list) {
            JSONObject jo=new JSONObject();
            String id=t.getId();
            String loginname=t.getLoginname();
            String password=t.getPassword();
            String username=t.getUsername();
            jo.put("id",id);
            jo.put("username",username);
            jo.put("loginname",loginname);
            jo.put("password",password);
            jsonArray.add(jo);

        }
        return jsonArray.toJSONString();
    }
}


注意:对数据库进行增删改的时候使用@PostMapping

7.创建启动类

package com.clouddemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application8001 {
    public static void main(String arges[]){
        SpringApplication.run(Application8001.class,arges);
    }
}

注意要放在包下

8.测试

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值