springBoot基本使用

1.如何打包

引入打包插件

<build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

然后在右边点击mavan-project里面有个springboot,然后点击lifecycle,里面有个package,双击就可以打包

2.springboot热部署

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-devtools</artifactId>
 </dependency>

个人觉得很鸡肋

在运行之前需要先按住ctrl+F9,进行编译后才能使用

3.yml基本语法

这个直接百度就行了,多的一匹

这里只简单写几个例子

user:
  username: ls
  password: 456
  age: 99
@Value("${user.username}")
如何在配置类中进行取值

4.多环境的切换

两种方式

方式一:在一个配置文件里面

spring:
  profiles:
    active: test	#激活(选择)环境test
---
spring:
  profiles: dev		#指定环境名字dev
server:
  port: 9999
---
spring:
  profiles: test	#指定环境名字test
server:
  port: 8888

方式二:写多个配置文件,后缀名不一样,通过后缀名来获取

比如application-dev.yml

server:
  port: 9999

application-test.yml

server:
  port: 8888

application.yml

spring:
  profiles:
    active: test 
    #根据文件名字配置 application-dev.properties

个人比较喜欢第二种方式,看着简洁,第一种方式装逼适合

5.日志的使用

指定配置文件配置logback-spring.xml

直接拷贝就行,以后也是用的这种方式

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 定义常量 : 日志格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n"/>

    <!--ConsoleAppender 用于在屏幕上输出日志-->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!--定义控制台输出格式-->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--打印到文件-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <file>logs/springboot.log</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>logs/springboot-%d{yyyyMMdd}-%i.log.gz</fileNamePattern>
            <maxFileSize>1KB</maxFileSize>
            <maxHistory>30</maxHistory>
            <!--总上限大小-->
            <totalSizeCap>5GB</totalSizeCap>
        </rollingPolicy>
        <!--定义控制台输出格式-->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <!--root是默认的logger 这里设定输出级别是debug-->
    <root level="info">
        <!--定义了两个appender,日志会通过往这两个appender里面写-->
        <appender-ref ref="stdout"/>
        <appender-ref ref="file"/>
    </root>

    <!--如果没有设置 additivity="false" ,就会导致一条日志在控制台输出两次的情况-->
    <!--additivity表示要不要使用rootLogger配置的appender进行输出-->
    <logger name="cn.itsource" level="error" additivity="false">
        <appender-ref ref="stdout"/>
        <appender-ref ref="file"/>
    </logger>

</configuration>

6.SpringBoot集成Thymeleaf

模板技术,类似于以前用的jsp啊什么的,springBoot就是用这个来进行页面的展示的

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

创建模板

在template中创建

<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>成功!</h1>
    <!--使用语法th:text 将div里面的文本内容设置为 -->

    <div th:text="${msg}">这是显示欢迎信息</div>
</body>
</html>

在controller里面写入

@Controller
public class HelloController {
    @RequestMapping("/index")
    public String hello(Model model){
        model.addAttribute("msg","后面有人,认真听课" );
        return "hello";
    }
}

7拦截器

第一步自己写一个类

这个类可以去继承HandlerInterceptorAdapter

也可以实现它的父类

@Component
public class MyInterceptor extends HandlerInterceptorAdapter { 
@Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("我被拦截了");
        return super.preHandle(request, response, handler);
    }

第二步

在主配置类中去实现WebMvcConfigurer

并且重写方法,将需要拦截的和不需要拦截的都可以在这里配置

public class ApplicationConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
    }
}

8.springboot继承datasource

导入3个包

<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.20</version>
    </dependency>

    <!-- mysql 数据库驱动. -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.1.1</version>
    </dependency>
  </dependencies>

这里采用自动配置

在yml中写

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql:///st
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

9.springboot如何配置mybatis

在resource中命名一个cn/itsource/hello/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.yyk.hello.mapper.UserMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.yyk.hello.domain.User">
        <id column="id" property="id" />
        <result column="username" property="username" />
        <result column="age" property="age" />
    </resultMap>


    <select id="selectAll" resultMap="BaseResultMap">
        select id,username ,age
        from USER
    </select>


</mapper>

第二步创建对应的domain和mapper

第三步在yml中配置

#配置Mybatis
mybatis:
  mapper-locations: classpath:cn/itsource/hello/mapper/*Mapper.xml

第四步在主配置类中

在类的头部加入

@MapperScan("com.yyk.hello.mapper")