Spring Boot 前传:
一、Spring Boot 初识:https://blog.csdn.net/young_1004/article/details/80532304
二、再谈Spring Boot:https://blog.csdn.net/young_1004/article/details/82195015
三、Spring Boot Controller使用:https://blog.csdn.net/young_1004/article/details/80562246
Spring Boot:
一、Spring Boot入门:https://blog.csdn.net/young_1004/article/details/103231194
二、Spring Boot配置:https://blog.csdn.net/young_1004/article/details/80549816
三、Spring Boot与日志
四、Spring Boot与web开发
五、Spring Boot与Docker
六、Spring Boot与数据访问
七、Spring Boot启动配置原理
八、Spring Boot自定义starters
九、Spring Boot与缓存
十、Spring Boot与消息
十一、Spring Boot与检索
十二、Spring Boot与任务
十三、Spring Boot与安全
十四、Spring Boot与分布式
十五、Spring Boot与开发热部署
十六、Spring Boot与监控管理
1.SpringBoot是什么?
Spring Boot是由Pivotal团队提供的全新框架(下一代框架),其设计目的是用来简化新Spring应用的初始搭建以及开发过程
2.SpringBoot的优点
2.1 对比传统的SSM
配置web.xml,加载spring和spring mvc
配置数据库连接、配置spring事务
配置加载配置文件的读取,开启注解
配置日志文件
配置其他很多的东西
.........................
2.2 SpringBoot的设计思想
约定优先于配置
3.SpringBoot与SpringMVC和Spring的区别
Spring 开发是需要很多的配置文件的,Spring Boot把许多的通用配置进行了封装,不需要重新配置,只有在做一些个性化的开发时才会进行额外的配置(约定优先于配置)
Spring Mvc开发的应用程序依赖于Tomcat
Spring Boot内嵌了Tomcat,用户无需安装Tomcat,直接运行.jar文件即可
4.SpringBoot 解决的问题
Spring Boot使编码变简单
Spring Boot使配置变简单
Spring Boot使部署变简单
Spring Boot使监控变简单
微服务
5.SpringBoot开发
5.1 创建SpringBoot项目
创建普通Maven项目即可
5.2 导入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<!--开发web项目的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
5.3建立目录结构
5.4创建 UserController
package com.ma.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class UserContrpller {
@GetMapping("/findUserById")
public String findUserById(){
System.out.println("findUserById......");
return "index.html";
}
}
5.5创建启动类
package com.ma.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
//启动Spring应用
SpringApplication.run(Application.class,args);
}
}
5.6配置资料
application.properties
server.port=8088
5.7 index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
index.jsp
</body>
</html>
5.8运行程序
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.0.2.RELEASE)
2018-08-29 20:57:17.788 INFO 12760 --- [ main] com.ma.springboot.Application : Starting Application on 马越的电脑 with PID 12760 (C:\Users\lenovo\IdeaProjects\girl\target\classes started by lenovo in C:\Users\lenovo\IdeaProjects\girl)
2018-08-29 20:57:17.871 INFO 12760 --- [ main] com.ma.springboot.Application : No active profile set, falling back to default profiles: default
2018-08-29 20:57:18.246 INFO 12760 --- [ main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@214b199c: startup date [Wed Aug 29 20:57:18 CST 2018]; root of context hierarchy
2018-08-29 20:57:22.572 INFO 12760 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8088 (http)
2018-08-29 20:57:22.679 INFO 12760 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2018-08-29 20:57:22.680 INFO 12760 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.31
2018-08-29 20:57:22.691 INFO 12760 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk1.8.0_91\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Java\jdk1.8.0_91\bin;C:\ProgramData\Oracle\Java\JAVA_HOME;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\MySQL\MySQL Server 5.5\bin;D:\program\apache-maven-3.5.3\bin;D:\program\apache-tomcat-7.0.88\lib;D:\program\apache-tomcat-7.0.88\bin;;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\TortoiseSVN\bin;D:\program\SlikSvn\bin;C:\Users\lenovo\AppData\Local\Microsoft\WindowsApps;;.]
2018-08-29 20:57:23.167 INFO 12760 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2018-08-29 20:57:23.167 INFO 12760 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 4980 ms
2018-08-29 20:57:23.604 INFO 12760 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/]
2018-08-29 20:57:23.614 INFO 12760 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-08-29 20:57:23.615 INFO 12760 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-08-29 20:57:23.616 INFO 12760 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2018-08-29 20:57:23.616 INFO 12760 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2018-08-29 20:57:23.997 INFO 12760 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-08-29 20:57:24.643 INFO 12760 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@214b199c: startup date [Wed Aug 29 20:57:18 CST 2018]; root of context hierarchy
2018-08-29 20:57:24.769 INFO 12760 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/findUserById],methods=[GET]}" onto public java.lang.String com.ma.springboot.controller.UserContrpller.findUserById()
2018-08-29 20:57:24.780 INFO 12760 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-08-29 20:57:24.781 INFO 12760 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-08-29 20:57:24.836 INFO 12760 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-08-29 20:57:24.837 INFO 12760 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-08-29 20:57:25.318 INFO 12760 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2018-08-29 20:57:25.424 INFO 12760 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8088 (http) with context path ''
2018-08-29 20:57:25.435 INFO 12760 --- [ main] com.ma.springboot.Application : Started Application in 9.05 seconds (JVM running for 14.495)
2018-08-29 20:57:39.053 INFO 12760 --- [nio-8088-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet'
2018-08-29 20:57:39.054 INFO 12760 --- [nio-8088-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started
2018-08-29 20:57:39.105 INFO 12760 --- [nio-8088-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 51 ms
findUserById......
http://localhost:8088/findUserById
6.SpringBoot的热部署
6.1pom依赖
<!--spring boot热部署的插件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
6.2修改properties
spring.thymeleaf.cache=false
6.3修改IDEA自动编译Java
file--->other settings--->default settings---->Build--->compiler--->build project autoxxxx(勾选)
6.4修改idea运行中的自动编译
help--->find action--->Registry--->compiler.automake.allow.when.app.running(勾选)
7.SpringBoot中的单元测试
7.1 pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
7.1 User类
package com.ma.springboot.pojo;
public class User {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
7.2 UserService类
package com.ma.springboot.service;
import com.ma.springboot.pojo.User;
import com.ma.springboot.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserDao userDao;
public User findUserById(Integer id){
return userDao.findUserById(id);
}
}
7.3 UserDao类
package com.ma.springboot.dao;
import com.ma.springboot.pojo.User;
import org.springframework.stereotype.Repository;
@Repository
public class UserDao {
public User findUserById(Integer id){
User user = new User();
user.setId(id);
user.setName("张三");
user.setAge(20);
return user;
}
}
7.4 UserServiceTest类
package com.ma.springboot.service;
import com.ma.springboot.pojo.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
@Autowired
UserService userService;
@Test
public void testFindUserById(){
User user = userService.findUserById(2);
System.out.println(user);
}
}
7.5 运行结果