springBoot入门教程(图文+源码+sql)
springBoot入门
1 springBoot
1.1 SpringBoot简介
Spring Boot让我们的Spring应用变的更轻量化。比如:你可以仅仅依靠一个Java类来运行一个Spring引用。你也可以打包你的应用为jar并通过使用java -jar来运行你的Spring Web应用。
Spring Boot的主要优点:
为所有Spring开发者更快的入门
开箱即用,提供各种默认配置来简化项目配置
内嵌式容器简化Web项目
没有冗余代码生成和XML配置的要求
本章主要目标完成Spring Boot基础项目的构建,并且实现一个简单的Http请求处理,通过这个例子对Spring Boot有一个初步的了解,并体验其结构简单、开发快速的特性。
1.2 系统要求
Java1.8及以上
Spring Framework 4.1.5及以上
本文采用Java 1.8.0_73、Spring Boot 1.3.3调试通过。
2 快速入门
2.1 创建一个maven工程
名为“springBoot-helloWorld”类型为jar的工程项目
直接next到下一步点击finish。
新建maven项目如下:
2.2 pom文件引入依赖
|
<parent> <build> |
|
spring-boot-starter-parent作用 spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖。使用它之后,常用的包依赖可以省去version标签。 spring-boot-starter-web作用 springweb 核心组件 spring-boot-maven-plugin作用 在添加了该插件之后,当运行“mvn |
如下:
2.3
编写HelloWorld服务
包名为:com.springBoot;类名为:HelloController
2.4
编写启动类
包名为:com ;类名为:StartAPP
注:这里的启动类必须要在所有的类的上一级或同级,注解@SpringBootApplication才能扫描到。
2.5
启动应用程序
2.5.1
方式一:
直接运行main方法:springBoot内部自带tomcat服务器
出现如下,表示服务器已经启动:
2.5.2
方式二:
打包项目:然后利用cmd命令:java –jar jar包名称
打包:双击package即可
出现如下:表示打包成功
切换到jar包所在目录,利用命令java –jar jar包名运行:
2.6
查看结果
打开浏览器,在浏览器输入:http://localhost:8080/hello/world,结果如下:
2.7
上面所用到的注解解释
2.7.1
@SpringBootApplication
他相当于@Configuration、@EnableAutoConfiguration、ComponentScan三个注解之和。
其中:
@ComponentScan:自动扫描符合条件的组件或bean;让spring Boot扫描到Configuration类并把它加入到程序上下文。
@Configuration :IOC容器配置,等同于spring的XML配置文件;使用Java代码可以检查类型安全。
@EnableAutoConfiguration :自动配置,将所有符合自动配置的bean加载到IOC容器中。
2.7.2
@RestController
@RestController:注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直接填入HTTP响应体中,是REST风格的控制器。
@ResponseBody:表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response
body中。比如异步获取json数据,加上@Responsebody后,会直接返回json数据。该注解一般会配合@RequestMapping一起使用。
@Controller:用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping。
2.7.3
@RequestMapping
@RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射。
3
web开发
3.1
静态资源访问
在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。
默认配置
Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:
/static
/public
/resources
/META-INF/resources
举例:我们可以在src/main/resources/目录下创建static,在该位置放置一个图片文件。启动程序后,尝试访问http://localhost:8080/D.jpg。如能显示图片,配置成功。
启动程序并访问:
3.2
全局捕获异常
/** |
3.3 渲染web页面
渲染Web页面
在之前的示例中,我们都是通过@RestController来处理请求,所以返回的内容为json对象。那么如果需要渲染html页面的时候,要如何实现呢?
模板引擎
在动态HTML实现上Spring Boot依然可以完美胜任,并且提供了多种模板引擎的默认配置支持,所以在推荐的模板引擎下,我们可以很快的上手开发动态网站。
Spring Boot提供了默认配置的模板引擎主要有以下几种:
• Thymeleaf
• FreeMarker
• Velocity
• Groovy
• Mustache
Spring Boot建议使用这些模板引擎,避免使用JSP,若一定要使用JSP将无法实现Spring Boot的多种特性,具体可见后文:支持JSP的配置;
当你使用上述模板引擎中的任何一个,它们默认的模板配置路径为:src/main/resources/templates。当然也可以修改这个路径,具体如何修改,可在后续各模板引擎的配置属性中查询并修改。
3.4 使用FreeMarker模板引擎渲染web视图
3.4.1 pom文件引入
<dependency> |
3.4.2 freemarker配置
新建application.properties文件
|
######################################################## ###FREEMARKER (FreeMarkerAutoConfiguration) ######################################################## spring.freemarker.allow-request-override=false spring.freemarker.cache=true spring.freemarker.check-template-location=true spring.freemarker.charset=UTF-8 spring.freemarker.content-type=text/html spring.freemarker.expose-request-attributes=false spring.freemarker.expose-session-attributes=false spring.freemarker.expose-spring-macro-helpers=false #spring.freemarker.prefix= #spring.freemarker.request-context-attribute= #spring.freemarker.settings.*= spring.freemarker.suffix=.ftl (好像设置为html不可以) spring.freemarker.template-loader-path=classpath:/templates/ #comma-separated list #spring.freemarker.view-names= # whitelist of view names that can be resolved |
3.4.3 后台代码
在HelloController中加上如下代码:
/** |
3.4.4 前台代码
在src/main/resources/创建一个templates文件夹,然后在文件夹下面创建aa.flt文件,内容如下:
<!DOCTYPE html> |
3.4.5 测试
启动服务程序——>在页面输入http://localhost:8080/hello/index后成功显示出页面:
3.4.6 Freemarker其他用法
主要就是判断、集合;
例如:
后端代码:
@RequestMapping("/freemarkerIndex")
|
前端代码:在templates文件夹下面新建bb.flt文件,内容如下:
<!DOCTYPE html> |
启动服务——>打开浏览器输入:http://localhost:8080/hello/freemarkerIndex显示页面:
3.5 使用JSP渲染web视图
3.5.1 pom文件引入依赖
<dependency> |
3.5.2 在application.properties创建以下配置
# 页面默认前缀目录 |
3.5.3 后端代码
注意:创建SpringBoot整合JSP,一定要为war类型,否则会找不到页面.
在包controller下面新建IndexController类:
@Controller |
如下:
3.5.4 前台jsp页面
注意:Jsp页面文件夹必须建立main文件夹下面webapp文件夹——>jsp文件夹下面创建*.jsp。
如下所示目录结构:
3.5.5 运行并测试
运行:启动StartApp,并打开浏览器输入网址:
注:这里的整合jsp与freemarker模板引擎并不冲突(由于刚开始将WEB-INF放在了resources下面,导致一直报错,后来调整了目录结构就好了。)
4 数据访问
4.1 springBoot整合JdbcTemplate
4.1.1 pom文件引入
<!--整合JDBC访问数据--> |
4.1.2 application.properties新增配置
spring.datasource.url=jdbc:mysql://localhost:3306/test |
4.1.3 创建UserService类
先创建service包,在创建UserService类
@Service |
4.1.4 创建UserController类调用UserService的方法
@Controller |
4.1.5 创建数据库
4.1.6 运行程序并测试
测试结果如下:
注意: spring-boot-starter-parent要在1.5以上。
4.2 springBoot整合mybatis
4.2.1 pom文件引入
在上面之前建立的pom文件的依赖下再添加下面的mybatis依赖
<!--整合mybatis--> <dependency> |
4.2.2 配置文件引入
|
spring.datasource.url=jdbc:mysql://localhost:3306/test |
4.2.3
Mapper代码
创建UserMapper类
@Mapper |
4.2.4 创建service层调用mapper层
public User findUserByName(String name){
|
4.2.5 创建controller层代码
/** /** |
4.2.6 测试
运行并测试:
测试插:1:这里注意url拼接name不需要加“”,否则代入数据库的也包含“”。例如:
测试插入2:
测试查询:
4.3 springboot整合使用springjpa
4.3.1 pom文件引入依赖
<!--整合使用springjpa--> |
4.3.2 创建Student实体类
@Entity(name = "student") // ..get/set方法 } |
4.3.3 创建StudentDao
JpaRepository类中封装了对数据库的基本的增删改查方法。
public interface StudentDao extends JpaRepository<Student,Integer> {
}
|
4.3.4 在 StudentController中新建代码
@RestController |
4.3.5 启动项目测试
4.3.5.1 Jpa插入一个学生
学生表主键是:自增
这里sname与sage要与数据库字段对应上。
数据库:
4.3.5.2 查询所有学生
5 事务管理
5.1 springBoot整合事物管理
springboot默认集成事物,在主要在方法上加上@Transactional即可
5.2 SpringBoot分布式事物管理
使用spring-boot-starter-jta-atomikos 分布式事物管理
5.2.1 新增配置文件信息
|
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jta-atomikos</artifactId> </dependency> |
6 缓存
6.1 注解配置与EhCache使用
6.1.1 pom文件引入
<!--配置缓存--> |
6.1.2 新建ehcache.xml 文件
<?xml version="1.0" encoding="UTF-8"?> |
配置信息介绍
<!--配置信息说明--> |
6.1.3 代码使用Cacheable
|
@CacheConfig(cacheNames = "baseCache") public interface UserMapper { @Select("select * from users where name=#{name}") @Cacheable UserEntity findName(@Param("name") String name); } |
6.1.4 清除缓存
|
@Autowired private CacheManager cacheManager; @RequestMapping("/remoKey") public void remoKey() { cacheManager.getCache("baseCache").clear(); } |
6.1.5 启动加入缓存
在启动类中加入:
@EnableCaching // 开启缓存注解
6.2 使用Redis做集中式缓存
6.2.1 POM.xml文件中添加依赖
<!--spring-boot-redis组件 --> |
6.2.2 添加redis配置
application.properties中配置Redis连接信息,如下:
#redis配置 |
Redis数据库:
6.2.3
后台封装redis业务代码
业务层代码:
package com.springBoot.service; import org.springframework.beans.factory.annotation.Autowired; |
控制层代码:
package com.springBoot.controller; import com.springBoot.service.RedisService; |
6.2.4 测试
6.2.4.1 先查看redis数据库内容:
6.2.4.2 存一个String类型的数据进去
启动程序:
查看数据库:
6.2.4.3 查询刚刚存进去的name
6.2.4.4 存一个list类型的对象(person)
查看数据库:
6.2.4.5 查询刚刚的list(person)
查询key=person的对象,从0到2,表示查询list下标从0开始到2的前三个对象。
7 其他内容
7.1.1 使用@Scheduled创建定时任务
在Spring Boot的主类中加入@EnableScheduling注解,启用定时任务的配置
@Component
public class ScheduledTasks {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
System.out.println("现在时间:" + dateFormat.format(new Date()));
}
}
7.1.2 使用@Async实现异步调用
启动加上@EnableAsync ,需要执行异步方法上加入 @Async
7.1.3 自定义参数
配置文件值
|
name=我是配置文件中的自定义参数 |
后台代码:在IndexController中
@Value("${name}")
|
7.1.3.1 测试
7.1.4 多环境配置
|
spring.profiles.active=pre |
|
application-dev.properties:开发环境 application-test.properties:测试环境 application-prod.properties:生产环境 |
7.1.5 修改端口号
server.port=8888
server.context-path=/springBoot
7.1.6 SpringBoot yml 使用
创建application.yml
注意:这里的冒号后面必须要有空格。
server: port: 8090 # 全局路径设置 context-path: /springBoot
启动程序类:查看端口号已经是8090了。
查询redis中的name:
7.1.7 发布打包
使用mvn package 打包
使用java –jar 包名
如果报错没有主清单,在pom文件中新增
<build> |
springBoot入门教程(图文+源码+sql)的更多相关文章
- SpringBoot 和Vue前后端分离入门教程(附源码)
作者:梁小生0101 juejin.im/post/5c622fb5e51d457f9f2c2381 推荐阅读(点击即可跳转阅读) 1. SpringBoot内容聚合 2. 面试题内容聚合 3. 设计 ...
- ASP .NET MVC 之Entity Framework入门教程及源码
本文主要的目的是 1. 说明Entity Framework Power Tools如何使用. 2. Entity Framework 快速门 实验环境: OS: Windows Server 20 ...
- GEF入门实例_总结_01_教程、源码、开发环境准备
一.前言 最近在学Eclipse插件开发,发现了一个比较好的GEF入门教程,并且按照教程上的操作,一步步实现了一个入门Demo,在此感谢作者的贡献. 好记性不如烂笔头,故决定总结一下这段时间的学习心得 ...
- 仿微信的IM聊天时间显示格式(含iOS/Android/Web实现)[图文+源码]
本文为原创分享,转载请注明出处. 1.引言 即时通讯IM应用中的聊天消息时间显示是个再常见不过的需求,现在都讲究用户体验,所以时间显示再也不能像传统软件一样简单粗地暴显示成“年/月/日 时:分:秒”这 ...
- mvcAPI (入门 3)(源码)
mvcAPI (入门 3)(源码) http://download.csdn.net/detail/chunfang740/9078579
- SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1
在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...
- PHP简单的长文章分页教程 附源码
PHP简单的长文章分页教程 附源码.本文将content.txt里的内容分割成3页,这样浏览起来用户体验很好. 根据分页参数ipage,获取对应文章内容 include('page.class.php ...
- 转载:JMeter压力测试入门教程[图文]
JMeter压力测试入门教程[图文] Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可 ...
- LIRE教程之源码分析 | LIRE Tutorial of Analysis of the Source Code
LIRE教程之源码分析 |LIRE Tutorial of Analysis of the Source Code 最近在做地理图像识别和检索的研究,发现了一个很好用的框架LIRE,遂研究了一通.网上 ...
随机推荐
- 第一章 Servlet
JavaEEe技术包括Servlet/Jsp.Java Message Service(JMS).Enterprise JavaBeans(EJB).JavaServer Faces(JSF),以及J ...
- [记录]FIO测试磁盘iops性能
FIO测试磁盘iops性能 1.SATA和SAS盘原生IOPS如下: 2.RAID磁盘阵列对应的写惩罚级别: 3.计算功能性IOPS公式如下: 功能性 IOPS=(((总原生 IOPS×写 %))/( ...
- R018---RPA是什么东东?
1.缘起 这个问题,很多文章回答过,一直想站在客户角度写个答案,今天正好. 2.RPA的名字 RPA是英文Robotic Process Automation的缩写,中文爱翻译为“流程自动化机器人” ...
- Baozi Leetcode Solution 290: Word Pattern
Problem Statement Given a pattern and a string str, find if str follows the same pattern. Here follo ...
- 「PowerBI」Tabular Editor 一个对中文世界很严重的bug即将修复完成
之前介绍过Tabular Editor这款开源工具,对PowerBI建模来说,非常好用,可以极大的增强自动化水平. 详细可查看此文章: 「PowerBI相关」一款极其优秀的DAX建模工具Tabular ...
- Socket 连接问题之大量 TIME_WAIT
简评:最近项目就出现了大量短连接导致建立新连接超时问题,最后是通过维护长连接解决的. 代理或者服务器设备都有端口限制,如果使用 TCP 连接,连接数量达到端口限制,在这种情况下,将不能创建新的连接. ...
- python+selenium实现163邮箱登陆—iframe动态ID定位 及常用定位方法
今天发现之前的登录163邮箱脚本定位不到iframe了,原因是iframe拼接了动态ID,修改后的脚本如下: from selenium import webdriver driver = webdr ...
- 七、SQL 高级语法一
Case when Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE ...
- C#编程.面向对象编程.可删除对象(Using{})
Using关键字可以在代码块中初始化使用重要资源的对象,Dispose()方法会在这个代码块的末尾自动调用,用法如下: <ClassName> <VariableName> = ...
- opencv编译
1. clone源码 https://github.com/opencv/opencv 2. 安装cmake 3. cmake配置的时候,输出目录需要另外设置一个目录,不可以放到源码目录 4. 用cm ...