zoukankan      html  css  js  c++  java
  • SpringBoot框架:第一章:基础配置和介绍

    什么是Spring Boot?

    Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用,简化新Spring应用的初始搭建以及开发过程,简化配置,用更简单的办法整合第三方其他技术。

    使用spring boot有什么好处

    其实就是简单、快速、方便!

    平时如果我们需要搭建一个spring web项目的时候需要怎么做呢?

    1. 配置web.xml,加载spring和spring mvc
    2. 配置数据库连接、配置spring事务
    3. 配置加载配置文件的读取,开启注解
    4. 配置日志文件

    ...

    配置完成之后部署tomcat 调试

    使用sping boot到底有多爽

    系统性归纳总结

    一、SpringBoot的作用

    • 简化配置文件

    • 以更简单的方式整合第三方技术

      • Redis
      • ElasticSearch
      • MyBatis
      • ……

    二、使用SpringBoot的套路

    • 加入需要的场景starter依赖
    • 配置properties或yml
    • 创建主启动类
    • 通过注解开启相关功能
    • 运行主启动类

    三、HelloWorld

    1.操作步骤

    ①创建Maven工程

    ②加入依赖

    <!-- 继承SpringBoot官方指定的父工程 -->	
    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-parent</artifactId>
    	<version>1.5.8.RELEASE</version>
    </parent>
    
    <dependencies>
    	<!-- 加入Web开发所需要的场景启动器 -->
    	<dependency>
    		<!-- 指定groupId和artifactId即可,版本已在父工程中定义 -->
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    </dependencies>

    ③创建主启动类

    ④创建HelloWorldHandler,现在创建的hanlder不会自动扫描,因为只有主启动类的子包才会自动扫描

    下面这个才正确

    SpringBootHelloWorld

    /**
     * 
     * 启动类
     *
     */
    @SpringBootApplication
    public class SpringBootHelloWorld {
    
    	 public static void main(String[] args) {
    	        SpringApplication.run(SpringBootHelloWorld.class, args);
         }
    }

    ⑤启动

    运行主启动类中的main方法启动SpringBoot程序。

    ⑥通过网页访问handler方法

    2.原理探究

    ①核心机制

    注意:

    spring boot默认会加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration类,
    DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean。
    因为工程中如果没有关于dataSource相关的配置信息,当spring创建dataSource bean因缺少相关的信息就会报错。
    在Application类上增加@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
    阻止spring boot自动注入dataSource bean,后面加上了druid有了dataSoure配置,就不需要加这个注解@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
    @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
    @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:
    @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
    @ComponentScan:Spring组件扫描。

    四、SpringBoot环境下配置文件

    1.总述

    SpringBoot环境下常用的配置文件有两种,一种是properties属性文件,一种是yml文件。二者各有特点,语法也有很大区别,但是最终效果基本一致。

    2.properties文件使用

    文件名:application.properties

    properties文件语法格式:

    server.port=8074
    spring.datasource.url=jdbc:mysql://localhost:3306/gmall?characterEncoding=UTF-8
    spring.datasource.username=root
    spring.datasource.password=root
    
    mybatis.configuration.map-underscore-to-camel-case=true
    mybatis.mapper-locations=classpath:mapper/*Mapper.xml
    
    spring.dubbo.registry.protocol=zookeeper
    spring.dubbo.registry.address=192.168.0.100:2181
    
    spring.dubbo.application.name=gmall-cart-service
    spring.dubbo.protocol.name=dubbo
    spring.dubbo.base-package=com.javawxid
    
    logging.level.root=info
    
    spring.redis.host=192.168.0.100
    spring.redis.port=6379
    spring.redis.database=0
    
    

    3.yml文件的使用

    ①yml简介

    yml是YAML(YAML Ain't Markup Language)语言的文件,以数据为中心,比json、xml等更适合做配置文件。

    ②yml语法

    • 使用缩进表示层级关系
    • 缩进时不允许使用Tab键,只允许使用空格。
    • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
    • 大小写敏感

    ③YAML 支持的三种数据结构

    • 对象:键值对的集合
    • 数组:一组按次序排列的值
    • 字面量:单个的、不可再分的值

    yml文件语法格式:

    server:
      port: 8443 #开发环境会开启https
      ssl:
        key-store: keystore.p12
        key-alias: tomcat
        key-store-password: 123456
        key-store-type: PKCS12
    
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
        username: root
        password: 123456
        druid:
          initial-size: 5 #连接池初始化大小
          min-idle: 10 #最小空闲连接数
          max-active: 20 #最大连接数
          web-stat-filter:
            exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" #不统计这些请求数据
          stat-view-servlet: #访问监控网页的登录用户名和密码
            login-username: druid
            login-password: druid
    
      data:
        mongodb:
          host: localhost
          port: 27017
          database: mall-port
    
      redis:
        host: 192.168.0.135 # Redis服务器地址
        database: 0 # Redis数据库索引(默认为0)
        port: 6379 # Redis服务器连接端口
        password: # Redis服务器连接密码(默认为空)
        jedis:
          pool:
            max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
            max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
            max-idle: 8 # 连接池中的最大空闲连接
            min-idle: 0 # 连接池中的最小空闲连接
        timeout: 3000ms # 连接超时时间(毫秒)
    
      rabbitmq:
        host: 192.168.0.135
        port: 5672
        virtual-host: /mall
        username: mall
        password: mall
        publisher-confirms: true #如果对异步消息需要回调必须设置为true
    
    # 日志配置
    logging:
      level:
        org.springframework.data.mongodb.core: debug
        com.macro.mall.mapper: debug
        com.macro.mall.portal.dao: debug
    
    

    常见的SpringBoot依赖

    pom.xml

       <!--继承spring-boot-starter-parent,要成为一个spring boot项目,首先就必须在pom.xml中继承spring-boot-starter-parent,同时指定其版本-->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.8.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
    <!-- 环境参数,在普通maven项目中,需要在pom.xml中配置插件来修改jdk版本,utf-8编码等环境参数,在spring boot中则更加简单。
        在eclipse中按ctrl+左键点击上面的spring-boot-starter-parent,查看其源码 -->
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 编译字符编码为utf-8 -->
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!-- 输出字符编码为UTF-8  -->
            <java.version>1.8</java.version><!-- jdK版本 -->
        </properties>
    
    
        <dependencies>
            <!--核心依赖,包括auto-configuration , logging和YAML。-->
      <!--      <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>-->
            <!-- 测试 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <!--springmvc,代表web模块,在这个模块中含了许多JAR包,有spring相关的jar,内置tomcat服务器,jackson等,这些web项目中常用的的功能都会自动引入-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!--数据库连接池-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
    
            <!-- MyBatis 生成器 -->
            <dependency>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-core</artifactId>
                <version>1.3.3</version>
            </dependency>
            <!-- MyBatis-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.6</version>
            </dependency>
            <!--Mysql数据库驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.15</version>
            </dependency>
            <!-- dataSource相关的配置信息DruidDataSource-->
            <!--集成druid连接池-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.10</version>
            </dependency>
    
    
        </dependencies>
    
        <!-- 编译生成可执行jar文件,默认情况下,maven打包生成的jar文件是用来给其他项目依赖用的,是无法直接运行的。
        spring boot根据自生需要,提供了一个插件来生成可执行jar文件。在spring-boot-starter-parent源码中可以找到 -->
        <build>
            <!--在浏览器中的访问路径,如果将它改成helloworld,再执行maven&#45;&#45;update,这时运行项目的访问路径是
            http://localhost:8080/helloworld/   而不是项目名的  http://localhost:8080/test-->
            <!--<finalName>demo</finalName>-->
            <!-- 在自己项目的pom.xml中声明这个插件,就会生效 -->
            <plugins>
                <!-- maven插件 -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
  • 相关阅读:
    Linux系统工程师必学的系统管理命令(1)
    学习中LINUX中常见问题(精华)
    "Visual Studio .NET已检测到指定的Web服务器运行的不是ASP.NET 1.1 版..."的解决办法
    今天,我决定离开
    Web Standards for Business 恐怕我没有时间翻译完了,有兴趣的可以继续
    了解到的关于深圳的一些事情
    谢谢大家,在深圳找到公司实习,发贴庆祝
    微软状告Google挖墙角,呵呵,微软坐不住了
    每个人都是生活的导演
    闷啊,一个人的孤单,一个人的所谓的项目
  • 原文地址:https://www.cnblogs.com/javawxid/p/12812042.html
Copyright © 2011-2022 走看看