spring温习笔记(八)springboot 资源整合

43 篇文章 2 订阅

lombok

什么是lombok

Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
在网上小猿也看到了一些lombok负面评价,但这部影响我们的学习。

安装lombok插件

在这里插入图片描述
安装后重启即可

lombok依赖
<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

当引入lombok依赖后,lombok可在Bean上使用:

@Data :自动提供getter和setter、hashCode、equals、toString等方法
@Getter:自动提供getter方法
@Setter:自动提供setter方法
@Slf4j:自动在bean中提供log变量,其实用的是slf4j的日志功能。
一般在项目中使用@Data的情况比较多。

Spring Boot整合-SpringMVC端口和静态资源

修改tomcat端口

在这里插入图片描述

server:
  port: 9090

修改静态资源的位置

在这里插入图片描述

Spring Boot整合-SpringMVC拦截器

编写拦截器

@Slf4j
public class MVCInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

       log.debug("before interceptor............");
        return true;
    }


    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        log.debug("in interceptor  controller............");
    }


    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        log.debug("after interceptor............");
    }
}

编写MVC配置类

@Configuration
public class MVCConfig implements WebMvcConfigurer {

    //注册MVCInterceptor
    @Bean
    public MVCInterceptor mvcInterceptor(){
        return new MVCInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(mvcInterceptor()).addPathPatterns("/*");
    }
}

在MVC配置需要注册拦截器并添加到拦截器链,这样就可成功实现自定义拦截器了

SpringBoot整合-事务和连接池

前面几个案例中我们也有关springboot整合druid数据库连接池的积累,但是我们假设想用默springboot默认的数据库连接池hikari,则只需要添加下面的依赖

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

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

然后配置yml文件数据库项

spring:
  profiles:
    active: def,app
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: root

在这里插入图片描述

SpringBoot整合-Mybatis

spring官方没有提供整合mybatis的启动器。

添加依赖

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

配置yml文件

mybatis:
  type-aliases-package: com.feitian.springboot.domain
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

主要指定数据库字段映射以及日志的执行方式

添加Mapper或者MapperScan注解

在这里插入图片描述
在这里插入图片描述

Spring Boot整合-通用Mapper

通用Mapper:可以实现自动拼接sql语句;所有的mapper都不需要编写任何方法也就是不用编写sql语句。可以提高开发效率。

添加启动器依赖;

<dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.1.5</version>
        </dependency>

修改UserMapper继承Mapper

在这里插入图片描述

修改启动引导类Application

需要修改Mapper扫描注解,改为通用mapper的MapperScan
在这里插入图片描述

修改User实体类添加jpa注解

@Data
@Table(name = "tb_user")
public class User {

    @Id
    //主键回填
    @KeySql(useGeneratedKeys = true)
    private Long id;

    private String userName;
    private String password;

    private String name;
    private Integer age;
    private Integer sex;
    private Date birthday;
    private Date created;

    private Date updated;

    private String note;
}

修改UserService

@Service
public class UserService {

    @Autowired
    private UserDao userDao;

    public User findById(Long id){
        User user   =  userDao.selectByPrimaryKey(id);
        return user;
    }


    @Transactional
    public void  addUser(User user){
        userDao.insertSelective(user);
        /*int i = 1/0;*/
        System.out.println("add"+user);
    }
}

Spring Boot整合-Junit

添加依赖

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

编写测试类

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
    @Autowired
    private UserService userService;

    @Test
    public void findById() {
        User user = userService.findById((long) 10);
        System.out.println(user);
    }

    @Test
    public void addUser() {
        User user = new User();
        user.setId((long) 14);
        user.setAge(7);
        user.setBirthday(new Date());
        user.setCreated(new Date());
        user.setUpdated(new Date());
        user.setUserName("dengjunhui");
        user.setPassword("1234");
        user.setSex(1);
        user.setNote("please show me the code");
        user.setName("lucy");
        userService.addUser(user);
    }
}

但是测试的时候小猿遇到一个非常奇怪的问题,执行单个方法时,另外一个方法也会一起执行,按道理来说测试那个方法就应该执行那个方法,如果有猿友知晓,请告诉小猿一声。

Spring Boot整合-Redis

添加依赖

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

编写测试类

@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest {
    @Autowired

    private RedisTemplate redisTemplate;

    @Test
    public void test(){
        //string 字符串
        //redisTemplate.opsForValue().set("str", "heima");
        redisTemplate.boundValueOps("str").set("heima");
        System.out.println("str = " + redisTemplate.opsForValue().get("str"));

        //hash 散列
        redisTemplate.boundHashOps("h_key").put("name", "heima");
        redisTemplate.boundHashOps("h_key").put("age", 13);
        //获取所有域
        Set set = redisTemplate.boundHashOps("h_key").keys();
        System.out.println(" hash散列的所有域:" + set);
        //获取所有值
        List list = redisTemplate.boundHashOps("h_key").values();
        System.out.println(" hash散列的所有域的值:" + list);

        //list 列表
        redisTemplate.boundListOps("l_key").leftPush("c");
        redisTemplate.boundListOps("l_key").leftPush("b");
        redisTemplate.boundListOps("l_key").leftPush("a");
        //获取全部元素
        list = redisTemplate.boundListOps("l_key").range(0, -1);
        System.out.println(" list列表中的所有元素:" + list);

        // set 集合
        redisTemplate.boundSetOps("s_key").add("a", "b", "c");
        set = redisTemplate.boundSetOps("s_key").members();
        System.out.println(" set集合中的所有元素:" + set);

        // sorted set 有序集合
        redisTemplate.boundZSetOps("z_key").add("a", 30);
        redisTemplate.boundZSetOps("z_key").add("b", 20);
        redisTemplate.boundZSetOps("z_key").add("c", 10);
        set = redisTemplate.boundZSetOps("z_key").range(0, -1);
        System.out.println(" zset有序集合中的所有元素:" + set);
    }
}

Spring Boot项目部署

植入插件

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

打包

在这里插入图片描述
到目前为止springboot的基础知识储备已经完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值