天天看点

项目前期准备--MyBaitsPlus、MyBatisPlusGenerator和Spring Security(4)

2.2. 测试MyBatisPlusGenerator生成的代码

先在straw父项目的pom.xml中添加Druid相关依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.23</version>
</dependency>

      

在straw-portal项目的application.properties配置:

server.port=8080

spring.datasource.url=jdbc:mysql://localhost:3306/straw?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=2
spring.datasource.druid.max-active=7

mybatis.mapper-locations=classpath:mapper/*.xml

logging.level.cn.tedu.straw.portal=trace

      

在项目的启动类上添加注解,配置接口文件的位置:

@MapperScan("cn.tedu.straw.portal.mapper")

全部完成后,在straw-portal子模块项目的src/test/java下创建cn.tedu.straw.portal.mapper.UserMapperTests测试类,进行简单的功能测试:

package cn.tedu.straw.portal.mapper;

import cn.tedu.straw.portal.model.User;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import javax.jws.soap.SOAPBinding;
import javax.sql.DataSource;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

@SpringBootTest
@Slf4j
public class UserMapperTests {

    @Autowired
    DataSource dataSource;
    @Autowired
    UserMapper userMapper;

    @Test
    void contextLoads() {
        log.debug("UserMapperTests.context");
    }

    @Test
    void getConnection() throws SQLException {
        Connection connection = dataSource.getConnection();
        log.debug("connection > {}", connection);
    }

    @Test
    void insert() {
        User user = new User();
        user.setUsername("plus");
        user.setPassword("1234");
        int rows = userMapper.insert(user);
        log.debug("rows={}", rows);
    }

    @Test
    void selectById() {
        Integer id = 1;
        User user = userMapper.selectById(id);
        log.debug("user > {}", user);
    }

    @Test
    void selectList() {
        List<User> users = userMapper.selectList(null);
        log.debug("count={}", users.size());
        for (User user : users) {
            log.debug("user > {}", user);
        }
    }

}

      

3. 项目前期准备–Spring Security

Spring Security是Spring提供的安全组件,主要用于在项目中对用户的身份进行识别和认证。

使用Spring Security之前,需要添加依赖,可以在创建SpringBoot项目时直接勾选,也可以在已经创建好的项目中添加:

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

首先,Spring Security可以实现对密码的加密处理!在straw-portal子模块项目中创建cn.tedu.straw.portal.security.SecurityConfig配置类,需要添加@Configuration注解,在类中自定义方法,返回PasswordEncoder的对象交给Spring容器,其对象的类型可以使用BCryptPasswordEncoder类型的对象:

package cn.tedu.straw.portal.security;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
public class SecurityConfig {
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}      

然后,在src/test/java下创建cn.tedu.straw.portal.SecurityTests测试类,测试加密:

package cn.tedu.straw.portal;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.crypto.password.PasswordEncoder;
@SpringBootTest
@Slf4j
public class SecurityTests {
    @Autowired
    PasswordEncoder passwordEncoder;
    @Test
    void encode() {
        String rawPassword = "123456";
        String encodePassword = passwordEncoder.encode(rawPassword);
        log.debug("raw password={}, encode password={}", rawPassword, encodePassword);
    }
}