SpringBoot学习
一.SpringBoot主流的原因
1.敏捷开发(整合框架)
2.无需Tomcat(java应用程序运行,实际jar包),内置Tomcat
3.减少xml配置(没有xml),配置文件properties
4.SpringCloud+SpringBoot
5.注解
SpringBoot之环境搭建:http://bbs.itmayiedu.com/article/1491835651684
视频学习网站:http://www.itmayiedu.com/front/showcoulist
二.SpringBoot和微服务有什么关联?
目前来说SpringCloud(http接口+rest),基于SpringBoot web组件封装SpringMVC
之后互联网项目,面向服务架构(SOA)转变成微服务架构
springdata(操作持久层框架,类似于MyBatis)与springmvc
springboot安不安全?安全的
三.第一个SpringBoot项目
1.系统要求
Java1.8及以上
Spring Framework4.1.5及以上
这里采用Java1.8.0、Spring Boot1.3.2调试通过。
2.快速入门
SpringBoot封装jar依赖原理,Maven继承依赖管理,所有jar全部都在parent依赖。
使用SpringBoot写一个接口(服务)
当然,前提条件是Maven环境搭建,具体可以参考《Maven安装教程详解》、《使用Eclipse构建Maven项目》
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bijian</groupId> <artifactId>springboot-helloworld</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 引入SpringBoot父类依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.3.RELEASE</version> </parent> <dependencies> <!-- springboot-web组件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> </project>
HelloWorldController.java
package com.bijian.controller; import java.util.HashMap; import java.util.Map; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; //表示该接口全部都返回json格式 @EnableAutoConfiguration @RestController public class HelloWorldController { @RequestMapping("/index") public String index() { return "success"; } @RequestMapping("/getMap") public Map<String, Object> getMap() { Map<String, Object> result = new HashMap<String, Object>(); result.put("errorCode", "200"); result.put("errorMsg", "成功"); return result; } public static void main(String[] args) { //主函数运行Springboot项目 SpringApplication.run(HelloWorldController.class, args); } }
运行HelloWorldController.java中的main方法,正常启出如下所示:

在浏览器中输入如下url,运行结果如下所示:


3.SpringBoot第二种启动方式
有多个Controller.java时,新建App.java,从App.java中写main方法启动服务。
App.java
package com.bijian.app; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; @ComponentScan("com.bijian.controller") @EnableAutoConfiguration public class App { public static void main(String[] args) { //主函数运行Springboot项目 SpringApplication.run(App.class, args); } }
HelloWorldController.java
package com.bijian.controller; import java.util.HashMap; import java.util.Map; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; //表示该接口全部都返回json格式 @RestController public class HelloWorldController { @RequestMapping("/index") public String index() { return "success"; } @RequestMapping("/getMap") public Map<String, Object> getMap() { Map<String, Object> result = new HashMap<String, Object>(); result.put("errorCode", "200"); result.put("errorMsg", "成功"); return result; } }
IndexController.java
package com.bijian.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class IndexController { @RequestMapping("/indexController") public String indexController() { return "IndexController"; } }
启动后,访问原来的url正常,访问http://localhost:8080/indexController也正常。
附:@SpringBootApplication注解存在,在当前同级包下不用加任何框架注解了,它全部集成好了,这个在后面再讲。
4.SpringBoot访问静态资源
在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。
默认配置:
Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:
/static
/public
/resources
/META-INF/resources
举例:我们可以在src/main/resources/目录下创建static,在该位置放置一个图片文件。启动程序后,尝试访问http://localhost:8080/D.jpg,如能显示图片,配置成功。
实例,在src/main/resources目录下新建static目录并拷贝pn.png,如下所示:

启动服务,输入http://localhost:8080/pn.png,正常访问图片如下所示:(SpringBoot静态资源默认的目录是static,所以访问url无需加static,加static反而不可以正常访问,即http://localhost:8080/static/pn.png无法正常访问)

动静分离,即后台服务与前台页面分离,静态资源CDN加速。
4.SpringBoot全局捕获异常
IndexController.java增加1/0代码如下,运行时将会抛出运行时异常。
package com.bijian.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class IndexController { @RequestMapping("/indexController") public String indexController() { int i=1/0; return "IndexController"; } }
新增全局捕获异常类GlobalExceptionHandler.java
package com.bijian.controller; import java.util.HashMap; import java.util.Map; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; //全局捕获异常类 @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(RuntimeException.class) @ResponseBody public Map<String, Object> resultError() { Map<String, Object> result = new HashMap<String, Object>(); result.put("errorCode", "500"); result.put("errorMsg", "系统错误"); return result; } }
启动访问此url结果如下:

全实现原理通过AOP机制,在方法之前做拦截,通过异常通知做通知管理。
5.SpringBoot整合FreeMarker
渲染Web页面,即SpringBoot整合页面,SpringBoot优先模板引擎,不建议使用jsp。
什么是模板引擎?springboot推荐,伪html格式,提高搜索引擎搜索,动态页面静态化。
常用的模板引擎有freemark、velocity、Thymeleaf、Groovy、Mustache等。
pom.xml加入freemark依赖包
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bijian</groupId> <artifactId>springboot-helloworld</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 引入SpringBoot父类依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.3.RELEASE</version> </parent> <dependencies> <!-- springboot-web组件 springmvc+spring+mybatis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> </dependencies> </project>
在src/main/resources下新建templates目录,并在其下面新建index.ftl
this is freemarker<br/> ${name} <#if sex==1> 男 <#elseif sex==2> 女 <#else> 其他 </#if> <#list userlist as user> ${user} </#list>
修改IndexController.java如下所示:
package com.bijian.controller; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class IndexController { @RequestMapping("/indexController") public String indexController(Map<String, Object> result) { result.put("name", "springboot freemark"); result.put("sex", 1); List<String> list = new ArrayList<String>(); list.add("zhangsan"); list.add("lisi"); result.put("userlist", list); return "index"; } }
运行结果如下所示:

当然,Freemarker还有一些配置,在application.properties文件中,如下所示:

6.SpringBoot整合JSP视图
SpringBoot整合JSP比较特殊,新建一个Maven工程,Packaging必须选择war,如下所示:

项目结构如下所示:

pom.xml必须引入spring-boot-starter-tomcat、tomcat-embed-jasper,如下所示:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.bijian</groupId> <artifactId>springboot-jsp</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <!-- 引入SpringBoot父类依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.3.RELEASE</version> </parent> <dependencies> <!-- springboot-web组件 springmvc+spring+mybatis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> </dependencies> </project>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> springboot整合jsp成功,注意(创建项目一定要为war类型) </body> </html>
application.properties
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
IndexController.java
package com.bijian.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class IndexController { @RequestMapping("/index") public String index() { return "index"; } }
AppJsp.java
package com.bijian.app; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; @ComponentScan("com.bijian.controller") @EnableAutoConfiguration public class AppJsp { public static void main(String[] args) { SpringApplication.run(AppJsp.class, args); } }
运行AppJsp.java,打开页面结果如下所示:

7.SpringBoot整合使用JdbcTemplate
视频学习地址:https://ke.qq.com/course/260513
三大视频学习地址:
1.蚂蚁课堂:http://www.mayikt.com/front/showcoulist
2.腾讯课堂:https://ke.qq.com/
3.幕课网:https://www.imooc.com/
posted on 2018-06-19 22:09 bijian1013 阅读(248) 评论(0) 收藏 举报
浙公网安备 33010602011771号