简单的说Springboot 是一个用于加速构建基于Spring的应用程序的框架,你可以把他叫做Spring集成框架,Spring敏捷开发框架;
Spring boot,让创建一个可用于生产级别的Spring应用程序变得非常简单,大多数Springboot应用程序需要仅最少的Spring配置。
ok,可以看得出Springboot并不是提供了某种新功能而是,将原来繁琐的框架整合变得更简单了;这样一来我们便可以专注于务逻辑的实现;
原因很简单了,以往在开发一个基于Spring的web项目时我们需要编写大量的配置文件,非常的耗时和低效,且容易出错,但是我们也会发现大多数应用程序的配置信息都是一样的,在这个敏捷开发大行其道的时代,Java也需要有一个能够大幅加快开发速度的框架,Spring boot应运而生, 我相信即使没有Spring boot 也会出现这样一个框架;
回顾一下我们以往在开发一个ssm项目时我们要做什么事情:
Spring boot:
需要注意的是Spring boot 是需要依赖构建工具的,可以是maven和gradle;
起步依赖(starter)
起步依赖本质上就是一个pom,(项目对象模型),其中包含了某个框架/功能运行所需的基础依赖信息,当我们需要某个框架/功能时加入该框架/功能的依赖即可
自动配置
Spring Boot会在启动时完成对各个框架的自动配置,考虑了众多因素,最终决定Spring配置应该用哪个,不该用哪个, 该过程是Spring自动完成的;
内置tomcat 或jetty等servlet容器
没有代码生成,不需要XML配置
尽可能自动配置Spring容器中的bean;
org.springframework.boot
spring-boot-starter-parent
2.2.4.RELEASE
org.springframework.boot
spring-boot-starter-web
//引导类不允许放在根目录下
@SpringBootApplication
public class Application {
public static void main(String[] args) {
//启动Spring boot 需要指定引导类
SpringApplication.run(Application.class);
}
}
@RestController
public class HelloController {
@RequestMapping("/hello/{name}")
public String helloTest(@PathVariable String name){
return "hello spring : "+name;
}
}
注意:引导类不能放在根目录下;
maven可以帮助我们在运行前检查依赖关系
添加插件
org.springframework.boot
spring-boot-maven-plugin
maven命令
spring-boot:run
添加了starter-web起步依赖后,工程就完成了Spring 和SpringMVC相关依赖和整合配置,我们已经可以处理客户端的请求并返回响应了,但是我们的数据是存储在数据库的,需要整合mybatis到项目中
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.1
mysql
mysql-connector-java
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` char(10) DEFAULT NULL,
`password` char(12) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES (1,'admin','123321'),(2,'jerry','123'),(3,'22','222');
public class User {
private Integer id;
private String username;
private String password;
set/get
}
package com.yyh.mapper;
import com.yyh.pojo.User;
import java.util.List;
@Mapper //mybatis 能识别带有该注解的mapper
public interface UserMapper {
public List selectAllUser();
}
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/user/list")
@ResponseBody
public List getAllUsers(){
return userMapper.selectAllUser();
}
}
在resources下创建名称为application.properties的文件,内容如下,另外spring还支持yml格式的配置文件
#DB Configuration:
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/boot?
serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=admin
#spring集成Mybatis环境
#pojo别名扫描包 mybatis.type-aliases-package=com.yyh.pojo
若没有使用@Mapper注解需要在启动类中添加扫描包信息
@SpringBootApplication
@MapperScan("com.yyh.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
默认情况下,maven在打包时会将java目下的*.java
以及resource下的配置文件诸如(*.xml,*.properties
)等编译到target中,这个两个文件夹都属于classpath,一些人为了方便查找可能会将mapper文件和接口文件一起放在java目录下,但是maven并不会将java目录下的xml进行编译的,这时可以在pom中指定要编译的目录信息
src/main/java
**/*.properties
**/*.xml
false
src/main/resources
**/*.*
false
在这之前我们一直在使用jsp来作为视图层,但是jsp必须依赖servlet容器,浏览器无法直接渲染jsp文件每次开发调试想要看到最新的效果都必须重新编译jsp,所以Spring boot 并不推荐我们使用jsp,视图层可以使用模板引擎,目前主流的有thymeleaf,和freemaker,官方推荐thymeleaf;
Spring boot 提供了thymeleaf的默认配置,所以在spring boot 中使用thymeleaf非常方便,Spring boot 还设置了thymeleaf的默认视图解析器,可以像操作jsp一样来操作Thymeleaf。Controller层几乎没有任何区别,就是在模板语法上有区别。
需要强调的是:模板依然是在后端完成渲染(前后端不分离),运行流程和jsp是一样的,关于thymeleaf详细用法不是本章的重点,参见官网。
org.springframework.boot
spring-boot-starter-thymeleaf
注意:模板必须放到src/main/resources/templates目录下。
user list
用户列表:
id
username
password
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper mapper;
public List getAall(){
return mapper.selectAllUser();
}
}
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/user/list")
@ResponseBody
public List getAllUsers(){
return userService.getAall();
}
}
当我们controller和service开发完毕调试视图时,热部署可以在检测到页面修改后自动重新加载,方便调试
org.springframework.boot
spring-boot-devtools
runtime
org.springframework.boot
spring-boot-maven-plugin
true
File-Settings-Compiler-Build Project automatically
ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running
在SpringMVC中需要手动配置静态资源的映射关系,而Spring boot 默认以及添加了静态资源的配置,可以将静态资源请求映射到resources下的static目录
我们来看一下目前的目录结构:
这也是一个Spring boot过程基本的目录结构
当我们需要单独测试容器中某个bean时,从头到尾的执行一遍业务逻辑是非常耗时的,这时就可以Junit来进行单元测
添加起步依赖:
org.springframework.boot
spring-boot-starter-test
test
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)//启动类
public class BootTest {
//注入需要测试的bean
@Autowired
UserService userService;
@Test
public void test1() {
List aall = userService.getAall();
System.out.println(aall);
}
}
也可以使用SpringJUnit4ClassRunner来作为测试引擎。
以上就是小编整理的SpringBoot入门教程,只是小编个人的见解,哪里有不准确的地方,还请各位大佬多多指出,咱们共同进步!!!
喜欢文章请多多点赞评论转发,关注小编,后续小编会为大家带来更丰富的学习内容~~~~