fengzf的gravatar头像
fengzf 2018-01-23 09:44:02

SpringBoot入门整合开发java Web项目实例

项目描述

非原创,自己公司准备换SpringCloud微服务,最近正在学习这方面的东西,总结一下通俗易懂的资料,分享一下。

运行环境:

jdk8+mysql+IntelliJ IDEA+maven

项目技术

springboot+maven+Hibernate+thymeleaf

数据库文件

链接: https://pan.baidu.com/s/1qZVl4Qw 密码:2ngr

链接: https://pan.baidu.com/s/1nxqqvsX 密码: cc4r

项目截图

SpringBoot入门整合开发java Web项目实例

一、json 接口开发

在以前的spring 开发的时候需要我们提供json接口的时候需要做的配置

1.添加 jackjson 等相关jar包

2.配置spring controller扫描

3.对接的方法添加@ResponseBody

就这样我们会经常由于配置错误,导致406错误等等,spring boot如何做呢,只需要类添加@RestController即可,默认类中的方法都会以json的格式返回

SpringBoot入门整合开发java Web项目实例

二、自定义Filter

Spring Boot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,并且我们可以自定义Filter

两个步骤:

1.实现Filter接口,实现Filter方法

2.添加@Configuration 注解,将自定义Filter加入过滤链

SpringBoot入门整合开发java Web项目实例

三、自定义Property

配置在application.properties

SpringBoot入门整合开发java Web项目实例自定义配置类

SpringBoot入门整合开发java Web项目实例测试(这里要首先把redis服务起来,其他地方有用到redis,不起会报错,保证数据库连接正确)

SpringBoot入门整合开发java Web项目实例SpringBoot入门整合开发java Web项目实例

测试通过

四、数据库操作

1、添加相jar包

SpringBoot入门整合开发java Web项目实例2、添加配置文件

SpringBoot入门整合开发java Web项目实例

 

hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构,有四个值:

(1)、create: 每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。

(2)、create-drop :每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。

(3)、update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。

(4)、validate :每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

dialect 主要是指定生成表名的存储引擎为InneoDB
show-sql 是否打印出自动生产的SQL,方便调试的时候查看

3、添加实体类和Dao

SpringBoot入门整合开发java Web项目实例

dao只要继承JpaRepository类就可以,几乎可以不用写方法,可以根据方法名来自动的生产SQL,比如findByUserName 会自动生产一个以 userName 为参数的查询方法,比如 findAlll 自动会查询表里面的所有数据,比如自动分页等等。。

Entity中不映射成列的字段得加@Transient 注解,不加注解也会映射成列

SpringBoot入门整合开发java Web项目实例测试

SpringBoot入门整合开发java Web项目实例

五、Spring boot中Redis的使用

Redis是目前业界使用最广泛的内存数据存储。相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化。除此之外,Redis还提供一些类数据库的特性,比如事务,HA,主从库。可以说Redis兼具了缓存系统和数据库的一些特性,因此有着丰富的应用场景。

1、引入 spring-boot-starter-redis

SpringBoot入门整合开发java Web项目实例

2、添加配置文件

SpringBoot入门整合开发java Web项目实例3、添加cache的配置类

SpringBoot入门整合开发java Web项目实例3、接下来就可以直接使用了

SpringBoot入门整合开发java Web项目实例SpringBoot入门整合开发java Web项目实例

SpringBoot入门整合开发java Web项目实例

4、自动根据方法生成缓存

SpringBoot入门整合开发java Web项目实例

其中value的值就是缓存到redis中的key

共享Session-spring-session-data-redis

分布式系统中,sessiong共享有很多的解决方案,其中托管到缓存中是最常用的方案之一,

1、引入依赖

SpringBoot入门整合开发java Web项目实例2、Session配置:

SpringBoot入门整合开发java Web项目实例

maxInactiveIntervalInSeconds: 设置Session失效时间,使用Redis Session之后,原Boot的server.session.timeout属性不再生效

3、测试

SpringBoot入门整合开发java Web项目实例登录redis 输入 keys '*sessions*'

SpringBoot入门整合开发java Web项目实例登录http://localhost:8080/uid 发现会一致,就说明session 已经在redis里面进行有效的管理了。

SpringBoot入门整合开发java Web项目实例

最后注意点:

问题一:如图

SpringBoot入门整合开发java Web项目实例redis连接不上,可能你的redis服务还没起来,若本地没有redis,下载一个

链接:https://pan.baidu.com/s/1dVEcYq 密码:8380

问题二:如图

SpringBoot入门整合开发java Web项目实例你的redis版本太低了,至少应该是2.8的


打赏

已有1人打赏

最代码官方的gravatar头像

文件名:spring-boot-web.zip,文件大小:98.519K 下载
最代码最近下载分享源代码列表最近下载
王雲飞  LV7 2022年11月7日
tgeuuy  LV10 2022年10月25日
笛卡尔积  LV6 2022年10月1日
gxpcwm  LV22 2022年8月31日
hyz419  LV6 2022年6月30日
Ty  LV10 2022年5月31日
454185051  LV13 2022年5月24日
caratttt  LV2 2022年5月2日
17798830  LV14 2022年1月25日
gitbook  LV2 2021年12月16日
最代码最近浏览分享源代码列表最近浏览
jay1992  LV14 3月11日
bbczlitao  LV9 3月5日
慵懒的小橘猫  LV11 3月1日
3296029180 1月18日
暂无贡献等级
xianyu091012  LV2 1月16日
Szy007  LV1 1月1日
linking  LV13 1月1日
pangzhihui  LV11 2023年12月26日
mhhsldflg  LV1 2023年12月24日
YhXyHx523  LV4 2023年12月24日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友