SpringBoot+Redis+JPA整合使用

SpringBoot_Redis_JPA整合使用

       SpringBoot是这几年特别火的一个WEB应用程序开发框架,就我个人的理解的话其实SpringBoot没什么特别的内容可讲,因为内部还是Spring+SpringMVC那套东西,只不过把之前繁琐的配置现在都给重新又封装了一次,然后以约定大于配置指导思想为纲要,将大部分的配置直接省略了;再就是内置了Tomcat,这点就比较好了,最重要的是可以和SpringCoud配合,这就比较666了,总之,还是非常棒的。下面简单入门实操一下:

Idea可以快速创建SpringBoot工程,当然,手工创建才能感受乐趣,下面手工创建一下:

1.     IDEA新建工程,选择maven工程,点击下一步,输入工程名称点击完成

SpringBoot+Redis+JPA整合使用

2.     编辑新创建的工程的pom文件,引入parent标签,这个是spring-boot基础的标签,选择相应的版本,关于版本,可以上网搜搜,选择合适的版本,这里选择2.1.12.RELEASE.

SpringBoot+Redis+JPA整合使用

3.     Spring Boot将大部分开发工程中的常用场景基本按照功能封装了一下,比如WEB开发,SpringMVC时代需要自己一个一个去导入相关的maven依赖包,导入日志记录,导入AOP包,导入json包等等,其实一个WEB开发,导入的包基本是固定的,自己导包其实也没什么,关键是包的版本选择问题,做过开发的都知道,jar包冲突问题是最莫名奇妙的,自己管理jar包难免会遇到这种问题,因此SpringBoot将这些个场景所需要的jar包依赖重新封装,根据当前配置的SpringBoot版本,自动管理这些jar的版本,引入相关的依赖,是不是很爽。SpringBoot就像一个积木的基座,需要开发的各个功能场景就是一个个已经搭建好的模块框架,而每一个模块框架又是由一系列相关依赖jar共同构建的。SpringBoot时代,只需要拉入需要的功能场景模块,就可以了,让人更加关注于业务。而不是框架搭建。

假设我们需要搭建一个WEB工程,那么引入web的starter,那么相关的jar就会自动引入工程。

SpringBoot+Redis+JPA整合使用

4.     Web所需的jar已引入,接下来就该引入操作数据库的扳手了,很多,JPA算一个,MyBatis算一个,Hibernate也算一个等等,这里先用JPA去做数据库的操作,那么引入依赖。

SpringBoot+Redis+JPA整合使用

5.     最后引入数据库的驱动jar,这里选用mysql数据库去操作,那么mysql的驱动jar如下:

SpringBoot+Redis+JPA整合使用

6.     开发目录下新建启动类,类似于正常的一个类的main启动类

 SpringBoot+Redis+JPA整合使用


内容如下:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

 

7.     在resources目录下创建一个固定名称的配置文件如下图所示,内容暂时为空

SpringBoot+Redis+JPA整合使用

8.     既然配置了mysql驱动那么必然要配置mysql连接信息,不然配置驱动干嘛,抽呢?  假如不配置驱动呢,其实也可以用,SpringBoot有一个内置小型数据库H2, 好多人可能没用过,这个数据库类似于内存数据库,小型的就一个jar包,也可以将数据存为db文件,支持增删改查。扯远了,说回mysql,配置驱动,就需要配置数据库连接信息。在resources下的application.properties文件中配置如下数据库连接信息内容:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

 

到此为止,框架搭完。。。。。。。。

停顿3秒, 简单不。简直不要太傻瓜。

 

启动一下看下:

SpringBoot+Redis+JPA整合使用

下面我们创建一个ConTroller测试一下,Controller代码如下:

package com.test.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    @GetMapping(value = "/sayHello")
    public String sayHello(){
        return "hello Spring Boot!";
    }
}

 

浏览器输入地址测试:

SpringBoot+Redis+JPA整合使用

成功!

 

 

下面将Service层Dao层实体类Bean对象编写下,如下:

Jpa方式下的Dao,只是一个接口。。。

@Repository
public interface UserDao extends JpaRepository {
}

 

Service层:

@Service
public class UserService {
    @Autowired
    UserDao userDao;

    public List getAllUser(){
        return userDao.findAll();
    }
}

 

 

 

Controll中的调用方法:SpringBool已经自动引入了jackson,会将返回的对象处理成json格式,注意我写的controller是@RestController,也就是Restful风格的接口,前后端分离的。

@GetMapping(value = "/getAllUser")
public List getAllUser(){
    return userService.getAllUser();
}

 

 

页面测试截图:

SpringBoot+Redis+JPA整合使用

数据被全部查出来了。

 

和Redis的整合, 假如真实的环境中,如果说对于数据变化很小,但是经常高频访问的数据,可能会放到Redis中去做缓存,减少数据库的访问操作,提高响应能力和处理,因此需要和Redis连接并做操作。

 

和之前的操作一样,首先pom文件中引入redis的依赖:

SpringBoot+Redis+JPA整合使用

之后改造Controller的刚才获取全部user数据的接口,如下:

@RestController
public class TestController {
    @Autowired
    UserService userService;
    @Autowired
    RedisTemplate redisTemplate;
    
    @GetMapping(value = "/getAllUser")
    public String getAllUser() throws JsonProcessingException {
        String allUserStr = (String) redisTemplate.opsForValue().get("allUser");
        if(StringUtils.isEmpty(allUserStr)){
            List allUser = userService.getAllUser();
            ObjectMapper objectMapper = new ObjectMapper();
            allUserStr = objectMapper.writeValueAsString(allUser);
            redisTemplate.opsForValue().set("allUser", allUserStr);
            return allUserStr+"---从数据库中来";
        }
        return allUserStr+"----从Redis中来";
    }

}

 

表中代码表示,若redis缓存中没有,则从库中查出来,之后往缓存中放一份,然后返回。

若redis缓存中有,则直接返回。

执行效果如下:

第一次redis中未保存数据:

SpringBoot+Redis+JPA整合使用 

第二次切之后再次刷新:如下

SpringBoot+Redis+JPA整合使用

 

如果Redis不在本地,并且端口等信息有变化,则要在application.properties配置文件中设置相应的redis的配置值。

        至此,一个简单的SpringBoot+Redis+JPA的框架结束。 SpringBoot真正的做到了让开发者更关注业务,而不是框架的维护。点赞。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值