• SpringCloud项目创建


    1.创建聚合父工程Project

      1.1  maven-archetype-site(更复杂的网站项目) 

      1.2 springcloud 版本和 springboot 对应的版本

        SpringBoot2.X版和SpringCloud H

        SpringCloud Alibaba 2.1

      1.3 springboot 的版本 官网

      1.4 相关链接 SpringCloud搭建(一) 聚合父工程搭建

      1.5 创建聚合总工程,未选择任何archetype ;环境 jdk1.8,maven3.8,

       springboot版本:2.2.2.RELEASE  ,

      SpringCloud版本:Hoxton.RELEASE,

      spring cloud alibaba 2.2.0.RELEASE

        ;选择maven- product;spring Initializr 联网会限制版本

        

    2.聚合总工程创建后的细节调整和优化

      2.1 idea中过滤无用文件 .idea .iml 文件夹 Editor(编辑) -- fileType(文件类型)

        2.1.1 点击加号,添加需要过滤的后缀,如:*.idea  *.iml。 先回车 apply即可生效

        2.2 idea 调整字符编码UTF-8 Editor(编辑) -- file Encodings(文件编码)

       

      2.3 idea 注解激活  build -- compiler(编译器) -- annotation processors (注解处理器) --  选择项目 但是自动已经设置好了

      

       2.4 Java 编译版本  build -- compiler(编译器) -- Java Compiler(java 编译器) 自动设置为 jdk1.8

      

    3. 关于父工程 

      3.1 父工程已经创建好了,但是父工程不做真实的代码开发,而是在父工程创建一个一个模块,在模块下做真实的开发 删除父工程的 src目录

      3.2 pom 文件中标注父工程,标注当前工程为父工程  

    <packaging>pom</packaging>

      3.3 父工程pom中 统一 管理jar包管理;锁定子模块使用组件的版本 如springboot 2.2.2;maven插件版本 

    <?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>ins.cloud</groupId>
        <artifactId>tsbxCloud</artifactId>
        <packaging>pom</packaging>
        <version>1.0-SNAPSHOT</version>
        <modules>
            <module>cloud-provide-payment8001</module>
        </modules>
    
    
        <!-- 统一管理jar包版本 -->
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <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.16</druid.version>
            <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
    
        <!-- 子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version  -->
        <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.1.0.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>${mysql.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.alibaba</groupId>
                    <artifactId>druid</artifactId>
                    <version>${druid.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.mybatis.spring.boot</groupId>
                    <artifactId>mybatis-spring-boot-starter</artifactId>
                    <version>${mybatis.spring.boot.version}</version>
                </dependency>
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>${junit.version}</version>
                </dependency>
                <dependency>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                    <version>${log4j.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok</artifactId>
                    <version>${lombok.version}</version>
                    <optional>true</optional>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>2.4.1</version>
                    <configuration>
                        <fork>true</fork>
                        <addResources>true</addResources>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    父工程pom配置

       3.4 项目maven构建报错 Cannot resolve plugin org.springframework.boot:spring-boot-maven-plugin:2.4.1

        使用 maven 导入插件的时候报错:解决办法: 在 pom.xml 中填入对应的版本号后下载成功了  <version>2.4.1</version>

      3.5 modelVersion 描述这个POM文件是遵从哪个版本的项目描述符

     4.创建子模块

      4.1 子模块命名 如 cloud-provide-payment8001(端口号)   

       4.2 选中父项目 -右键new -module (选择maven项目)

      

       

       4.3 子模块样式

      

       4.4 子模块引入相关依赖,公共的依赖不需要指定版本 启动器

        <dependencies>
            <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>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.10</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>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
    View Code

       4.5 application.yml - resources文件夹下server:

      port: 8001
    
    spring:
      application:
        name: cloud-payment-service
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql:
    //localhost:3306/cloud2020?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: root mybatis: mapperLocations: classpath:/mapper/*.xml #实体类所在的包,配置号后mapper.xml不需要写实体类的完整路径 type-aliases-package: com.atguigu.springcloud.entities

        4.5.1  type-aliases-package 的作用

        4.5.2 mysql 创建数据库使用的字符编码集:

          

        4.5.3  Mysql的utf8与utf8mb4区别,utf8mb4_bin、utf8mb4_general_ci、utf8mb4_unicode_ci区别

                utf8存储三个字节,mb4四个字节 可以存储Emoji 表情

              utf8mb4_bin  区分大小写,而且可以存二进制的内容。

               utf8mb4_unicode_ci 基于标准的Unicode来排序和比较

      4.6 编写启动类 

      

      4.7.springboot集成mybatis;

        4.7.1 注意 启动类上 两个注解

            

           // Spring 组件包扫描路径
          @ComponentScan(basePackages = "ins")
    
           //MyBatis Mapper包扫描路径
          @MapperScan(value = { "ins.platform.*.dao","ins.platform.*.*.dao","ins.platform.*.*.*.dao"})

         4.7.2 mapper接口层,1.每个接口上加上 @Mapper这个注解的 纳入spring管理;2不写注解 需要在启动类上加上@MapperScan() 扫描到

          1.问题 :报错 no mybatis mapper was found in

            没有去指定mybatis的mapper路径,mybatis的MapperScan()会扫描启动类同级目录下的mapper接口

            导致报No MyBatis mapper was found in的警告

          2.问题:No active profile set, falling back to default profiles: default

          3.问题:如何优雅的不使用@Mapper注解 --- 启动类扫描

          

         4.7.3  问题:”运行项目连接Mysql时出现警告Establishing SSL connection without server‘s identity verification is not recommende   

            url=jdbc:mysql://127.0.0.1:3306/framework?characterEncoding=utf8&useSSL=true

        4.7.4 问题: Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable  

            生产环境上,通常不允许启用devTools工具,因为这是一个严重的安全问题  

            关闭热部署插件  

        4.7.5 问题:No active profile set, falling back to default profiles: default

             配置多环境启动 

        4.7.6 Spring Boot 2.0 中使用 Actuator  健康检查

            作用: 主要是完成微服务的监控,完成监控治理。可以查看微服务间的数据处理和调用,当它们之间出现了异常,就可以快速定位到出现问题的地方。

            详解SpringBoot2.X应用程序监控Actuator的配置与使用

              为了程序的安全性考虑,默认只开启了这两个端口

               spring-boot-starter-actuator监控接口详解

        4.7.7 Initializing Spring DispatcherServlet 'dispatcherServlet'

            前端控制器DispatcherServlet

        4.7.8 trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration] is not eligible     for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)

            该日志的主要意思是代理事务管理器配置bean被提前注册了,我这个bean不影响,只是这个bean被提前注册了,bean依旧是管用的

        

      4.8.springboot子项目启动

        4.8.1 自动注入的两个注解的区别,spring提供的@Autowired 和 jdk提供的@Resource

          @Autowired:spring提供注解,根据类型注入属性 有且只有一个匹配类型的对象

          @Qualifier:@Autowired注入时,若有多个同类型的bean,使用该注解指定加载的bean的名称

              spring默认的组扫描的bean id 是类名的首字母小写,如:类 Bee ,bean  id 默认:bee;

              如果类第一个字母大写第二个小写,那么首字母小写获取bean

              如果第一个和第二个字母都是大写的,那个获取bean首字母要大写

          @Resource:java提供注解,可根据名称(默认)、类型注入属性;如果name存在匹配name,如果不存在匹配类型

        4.8.2 post请求中 把参数封装到接口对象中,需要用的@RequestBody这个注解

      

      4.9 框架工程模块的搭建步骤

        1. 建module 选择maven创建

        2.改写pom文件

        3.写yml文件

        4.写启动类

        5.业务类

    8.关于坐标依赖 groupid和artifactId

      groupid 项目组织唯一标识 可以是父组织

      ArtifactID就是项目的唯一的标识符 统称为坐标

       9.2 同级maven依赖项目

    <dependency>
    <!--父类组-->
    <groupId>ins.cloud</groupId>
    <!--依赖公共项目名称-->
    <artifactId>cloud-api-commons</artifactId>
    <version>${project.version}</version>
    </dependency>

    9.idea中一个项目不同端口启动多次

     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    本来一行可以代替的树节点搜索
    mssql 重新开始标识
    TabContainer实现服务器端回传
    CSS中图片路径的问题
    Javascript在IE下设置innerHTML时出现"未知的运行时错误"
    sql union和union all的用法及效率
    关于动态添加TabPanel遇到的问题以及思考
    关于linq to sql调用存储过程,出现"无法枚举查询结果多次"的问题
    SQL Server 2005连接服务器时的26号错误解决!
    SQL 2000和2005 获取两表的差集
  • 原文地址:https://www.cnblogs.com/nextgg/p/16098748.html
Copyright © 2020-2023  润新知