设计目的:简化 Spring应用的 初始搭建及开发过程
SpringBoot = SpringMVC + Spring
搭建环境
在 pom.xml 中
<!--继承springboot父项目--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version> </parent> <!--引入springboot的web支持--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>根据约定创建相应的目录
第一个测试程序
//@EnableAutoConfiguration //作用:开启自动配置 初始化spring环境 初始化springmvc环境 //@ComponentScan //作用:用来扫描相关注解 扫描范围:当前入口类及其所在的子包 //@SpringBootApplication = @ComponentScan + @EnableAutoConfiguration + @SpringBootConfiguration @SpringBootApplication 注解就有了自动配置功能 、扫描包功能。 public class Application { public static void main(String[] args) { //SpringApplication spring应用类 作用:用来启动springboot应用 //参数1:传入入口类的类对象 参数2:main函数的参数 SpringApplication.run(Application.class,args); } } //cf.duanzifan.controller.HelloController @RestController @Requestmappering("/hello") public class HelloController{ @GetMapping("/hello") public String hello(){ System.out.println("hello springboot!!!!!"); return "hello world"; } }自动配置:pom.xml
spring-boot-starter-parent ====> spring-boot-dependencies:核心依赖全在这个的父工程中我们在引入springboot依赖的时候,不需要指定版本,就是因为有这些版本仓库 starters:启动器,是一组方便的依赖关系描述符 spring-boot-starter-xxx 例如 spring-boot-starter-web 就会自动导入web环境的所有依赖在资源文件中创建 banner.txt 在里面书写内容就可以改变默认的 banner
默认banner 设置 banner ${AnsiColor.BRIGHT_YELLOW} // _ooOoo_ // // o8888888o // // 88" . "88 // // (| ^_^ |) // // O\ = /O // // ____/`---'\____ // // .' \\| |// `. // // / \\||| : |||// \ // // / _||||| -:- |||||- \ // // | | \\\ - /// | | // // | \_| ''\---/'' | | // // \ .-\__ `-` ___/-. / // // ___`. .' /--.--\ `. . ___ // // ."" '< `.___\_<|>_/___.' >'"". // // | | : `- \`.;`\ _ /`;.`/ - ` : | | // // \ \ `-. \_ __\ /__ _/ .-` / / // // ========`-.____`-.___\_____/___.-`____.-'======== // // `=---=' // // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // // 佛祖保佑 永不宕机 永无BUG //配置视图解析器
在 application.properties 文件中写入
spring.mvc.view.prefix=/ spring.mvc.view.suffix=.jsp 解决 idea 和 springboot 的一个 bug,才能正常找到 修改 jsp 无需重启应用 server.port=8080 server.servlet.context-path=/springboot-01 spring.mvc.view.prefix=/ spring.mvc.view.suffix=.jsp server.servlet.jsp.init-parameters.development=trueThymeleaf 是一个用于 web 和独立环境的现代服务器端 java 模板引擎
Thymeleaf可以完全替代 jsp,可以在有网络和无网络的环境下运行,既可以让美工在浏览器上查看静态效果,也可以让程序员在服务器查看带数据的动态页面的效果。
引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>编写配置
完全可以不写
spring.thymeleaf.prefix=classpath:/templates/ # 使用模板的目录 spring.thymeleaf.suffix=.html # 使用模板的后缀 spring.thymeleaf.encoding=UTF-8 # 使用模板的编码 spring.thymeleaf.enabled=true # 开始thymleaf模板 spring.thymeleaf.servlet.content-type=text/html #使用模板的响应类型注意:在文件夹 templates 中的模板,默认情况下 在控制器的跳转下才能访问。
我们可以设置配置,让可以不用经过控制器也可以访问
spring.resources.static-locations=classpath:/templates/,classpath:/static/ @Controller @RequestMapping("/user") public class UserController { @RequestMapping("/findAll") public String findAll(){ System.out.println("查询All"); return "index"; //逻辑名 classpath:/templates/逻辑名.html } }使用时必须先在页面中加入 thymeleaf 的命名空间
<html lang="en" xmlns:th="http://www.thymleaf.org"/> <html lang="en" xmlns:th="http://www.thymleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> ====================================================================================== <h1>展示单个数据</h1> 用户名:<span th:text="${username}">注意,这里面不能有内容,会被覆盖</span> 链接 : <span th:utext="${html}">注意:解析html用 utext</span> 放入表单:<input type="text" th:value="${username}"/> ====================================================================================== <h1>展示对象数据</h1> <ul> <li>name:<span th:text="${user.name}"></span></li> <li>age:<span th:text="${user.age}"></span></li> </ul> ====================================================================================== <h1>有条件的展示数据</h1> <span th:if="${user.age} <= 20" th:text="${user.name}"/> ====================================================================================== <h1>展示多个数据</h1> <ul th:each="user:${users}"> <li th:text="${user.name}"></li> <li th:text="${user.age}"></li> </ul> ====================================================================================== <h1>展示多个数据(获取遍历状态)</h1> <ul th:each="user,userStat:${users}"> <li th:text="${user.name}"></li> <li th:text="${user.age}"></li> <li>集合中的总记录数:<span th:text="${userStat.size}"/></li> </ul> </body> </html> @Controller @RequestMapping("user") public class UserController { @RequestMapping("findAll") public String findAll(HttpServletRequest request){ request.setAttribute("username", "张三"); request.setAttribute("html", "<a href=''>李四链接</a>"); request.setAttribute("user", new User("王五",23)); List<User> users = Arrays.asList(new User("刘六",34), new User("田七",37), new User("老八",23)); request.setAttribute("users", users); System.out.println("查询All"); return "index1"; } } 为了进一步提高开发效率,springboot 为我们提供了全局项目热部署,日后在开发的过程中修改了部分代码以及相关配置文件后,不需要每次重启使得修改生效,在项目中开启了 springboot 的全局热部署之后只需要在修改后等待几秒即可使修改生效。
开启热部署 项目引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> 设置 idea 中支持自动编译在代码界面快捷键:ctrl + alt + shift + /
当出现以下,就代表成功
ot=info logging.level.cf.duanzifan.dao=debug
### 17、切面编程 - 引入依赖 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> ``` - 相关注解 ~~~markdown 1. @Aspect 用在类上,代表这个类是一个切面 2. @Before 用在方法上,代表这个方法是一个前置通知方法 3. @After 用在方法上,代表这个方法是一个后置通知方法 4. @Around 用在方法上,代表这个方法是一个环绕的方法[外链图片转存中…(img-OE8gF7gQ-1599126798593)]
[外链图片转存中…(img-0CeHS7fr-1599126798597)]