SpringBoot快速开始
一、什么是Spring Boot
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架。
二、使用 Spring Boot有什么好处
其实就是简单、快速、方便!平时如果我们需要搭建一个 Spring Web 项目的时候需要怎么做呢?
- 配置 web.xml,加载 Spring 和 Spring mvc
- 配置数据库连接、配置 Spring 事务
- 配置加载配置文件的读取,开启注解
- 配置日志文件 ... 配置完成之后部署 Tomcat 调试 ...
三、使用IDEA创建Spring Boot工程
1、创建
默认使用 https://start.spring.io/ 这个网址创建工程,其实一次就是网站已经选择性的帮你配置好Spring工程的所需的基本配置了,当然,这个网址有时候访问速度太慢,可以使用下面我们给出的阿里云的网址https://start.aliyun.com/一样可以创建
2、项目基本信息
3、选择版本和依赖
右上角选择SpringBoot版本,以及Springboot工程的依赖,其实无非就是maven工程帮我们导入的jar包,这里其他我们暂时都不需要,后面有需要自己到POM.xml
文件导入就行了,这里为了演示需要,直接导入Spring web相关jar包
4、工程名
5、基本结构
下面就是springboot工程创建好之后的基本结构
其实和maven工程的结构基本一致
注意: 这里文件的存放位置,SpringBoot相当的方便,但是这种方便肯定是有代价的,那就是"约定大于配置",在不改动SpringBoot默认配置的情况下,Spring Boot里面每种类型文件存放的位置是有默认的约定的,如果你不按照约定去存放,那肯定就有问题
一般情况下,后台java代码,我们默认按照下面的路径去存放比较合适(包名是自定义的):
com
+- example
+- myproject
+- Application.java
|
+- bean
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- controller
+- CustomerController.java
最关键的点,就是Application启动类,一定要在其他类的上一级目录
那这样,我们已经开始写代码了,比如创建一个最简单的Hello World
@RestController
public class HelloController {
@GetMapping("/hello")
public String index(){
return "Hello World";
}
}
@RestController
的意思就是controller里面的方法都以json格式输出,不用再写什么jackjson配置的了!
启动主程序,打开浏览器访问http://localhost:8080/hello,就可以看到效果了,有木有很简单!
四、一些怀旧的设置
1、整合Servlet、Filter与Listener
只需要两个步骤: 1)、和以前一样编写Servlet、Filter或者Listener
Servlet
@WebServlet(name = "HelloFirstServlet",urlPatterns = "/helloFirst")
public class HelloFirstServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("HelloFirstServlet.doGet");
}
}
Filter
@WebFilter(filterName = "HelloFirstFilter",urlPatterns = "/*")
public class HelloFirstFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println("====进入 HelloFirstFilter.doFilter====");
chain.doFilter(req, resp);
System.out.println("====离开 HelloFirstFilter.doFilter====");
}
public void init(FilterConfig config) throws ServletException {
System.out.println("====初始化 HelloFirstFilter.init====");
}
}
Listener
2)、在启动类中加入Servlet扫描@ServletComponentScan
@SpringBootApplication
@ServletComponentScan
public class SpringbootdemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootdemoApplication.class, args);
}
}
五、加入热部署
spring为开发者提供了一个名为spring-boot-devtools
的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。
devtools的原理
深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。
使用需要添加以下的配置:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
IDEA配置
当我们修改了Java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译:
(1)File-Settings-Compiler-Build Project automatically
(2)ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running
Comments