Springboot入门

2021-02-21   


整合Junit

引入依赖

在pom.xml加入单元测试的starter

<!--引入junit依赖启动器-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
</dependency>

测试类

@SpringBootTest //SpringBoot单元测试的专有注解
@RunWith(SpringJUnit4ClassRunner.class)
public class MyTest {

    @Autowired
    private Student student;

    @Test
    public void test(){
        System.out.println(student.getName());
    }
}

整合SpringMVC

日志输出设置

# 日志级别设置格式是   
# 包名: 日志级别(常用的级别有4个: debug info warn error)
logging:
  level:
    org.springframework: info
    com.itheima: info

访问静态资源

springboot定义的几个位置用于存放静态资源

public class ResourceProperties {
//定义了静态资源路径
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = 
	new String[]{"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"};
}

一般把静态资源存放于classpath:/static/ 目录下

自定义静态资源位置

# 当然,如果想自定义位置也可以,使用下面格式即可
spring:
	resources:
		static-locations: classpath:/templates/

拦截器配置

定义拦截器

自定义一个类实现HandlerInterceptor接口,重写自己需要的方法

com.itheima.interceptor.MyInterceptor.java :

@Component
public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("进入controller之前");
        return true;    //放行
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("离开controller之后");

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("页面渲染完毕之后");
    }
}

注册拦截器

自定义一个配置类,实现WebMvcConfigurer接口,并通过addInterceptors方法将自己的拦截器注册到SpringBoot

com.itheima.config.WebMVCConfig.java :

//mvc配置类
@Configuration
public class WebMVCConfig implements WebMvcConfigurer {

    @Autowired
    private MyInterceptor myInterceptor;

    //向spring注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry
                .addInterceptor(myInterceptor)  //向spring添加拦截器
                .addPathPatterns("/**")      //拦截所有路径
                .excludePathPatterns("/images/1.jpg"); //放行1.jpg
    }
}

整合Mybatis

添加依赖

pom.xml中添加依赖

<!--调整mysql的版本-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>
<!--加入mybatis的启动器,这是mybatis公司提供的-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>

创建userMapper接口

dao层接口, springboot推荐使用xxxMapper的名字

com.itheima.mapper.UserMapper.java

public interface UserMapper {
    List<User> findAll();
}

创建userMapper映射

在resources下创建mappers目录,然后在此目录下创建UserMapper.xml文件,注意:这里需要包的对应

resources/mappers/UserMapper.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.itheima.mapper.UserMapper">

    <select id="findAll" resultType="com.itheima.domain.User">
        select * from tb_user;
    </select>
</mapper>

添加配置文件

在配置文件application.yaml中添加数据源和mybatis的配置

resources/application.yaml

# 数据源配置(springboot内置连接池对象HiKariCP)
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql:///springboot
    username: root
    password: root

# mybatis简单配置
mybatis:
  mapper-locations: classpath:mappers/** # 指定mapper映射文件
  configuration:
    map-underscore-to-camel-case: true # 开启驼峰式映射

切换数据源

Springboot 2.2.0版本之后,内置了HiKariCP连接池. 如果需要切换druid连接池, 使用以下方法

  1. 修改pom.xml,添加druid的依赖
<!--druid依赖-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.15</version>
</dependency>
  1. 修改application.yaml,添加spring.datasource.type配置项
# 连接池配置(springboot内置连接池对象HiKariCP)
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql:///springboot
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource

整合redis

Spring为了让开发者简化Jedis的操作,提供了spring-data-redis框架,它对reids底层开发包(Jedis)进行了高度封装,

通过RedisTemplate对象实现了redis各种操作、异常处理及序列化,支持发布订阅等功能。

添加依赖

pom.xml中加入依赖

<!--redis 起步依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

添加配置(可省略)

Springboot默认会连接localhost:6379端口,然后操作索引为0的数据,如果需要调整,可以使用下面的配置

spring:
  redis:
      host: localhost # 服务器地址
      port: 6379 # 端口
      database: 0 # 使用库的索引标识

案例:

List<User> userList = (List<User>)redisTemplate.opsForValue().get("users"); //从redis查询
if(userList == null){
    userList = userMapper.findAll();    //从数据库查询

    //放入redis
    redisTemplate.opsForValue().set("users", userList);
}

request.setAttribute("users",userList);

Q.E.D.