coding
fengzf的gravatar头像
fengzf2018-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下载
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友