1、简介
Boot可以很容易地创建独立的、基于Spring的生产级应用程序,可以"直接运行"。第三方库采取了一种固执己见的看法,这样你就可以以最小的麻烦开始。Spring Boot应用程序需要最少的Spring配置。
2、特性
- SpringBoot Starter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中。
2,使编码变得简单,SpringBoot采用 JavaConfig的方式对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率,比如@Configuration和@bean注解结合,基于@Configuration完成类扫描,基于@bean注解把返回值注入IOC容器。
3.自动配置:SpringBoot的自动配置特性利用了Spring对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们。
4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了,SpringBoot的项目可以打成一个jar包。
3、简单搭建
3.1、创建maven项目
点击create
3.2、 导入依赖
XML
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
并且刷新一下
3.3、 创建启动类
java
package com;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class AppStart {
public static void main(String[] args) {
SpringApplication.run(AppStart.class, args);
}
}
3.4、创建控制类
java
package com.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
System.out.println(" 访问成功!");
return "hello world";
}
}
3.5、运行启动类main方法
3.6、运行成功后访问localhost:8080/hello
SpringBoot内部已经约定会自动递归扫描启动类(@SpringBootApplication注解的类)所在的包,所以启动类必须放在包级别较高的位置。
SpringBoat中内嵌tomcat,所以main启动时,其实是启动了内嵌的tomcat。
main方法:把当前项目打成jar包,发布到内嵌的tomcat的webapps下,并修改server.xml配置文件,通过启动命令启动。
dependencyManagement:依赖管理工
它只负责定义版本号,进行版本管理,不负责导入依赖jar包。但当我们真的引入对应依赖的时候,就不需要再写版本号了。
SpringBoat中有很多starter启动器。每一个其实就相当于一个项目包,这里面依赖了很多其它的项目包。我们只需要引入starter,其它的依赖也跟着引引入进来。
starter-web: .SpringMVC所需要的jar包。
@SpringBootApplication 是---个组合注解,里面主要包含以下三个注解:
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@ComponentScan.Filter(type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
) ,@ComponentScan.Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
@SpringBootConfiguration
-
它只是@Configuration注解的派生注解;
-
它与@Configuration注解的功能一致;
-
只不过@SpringBootConfiguration是springboot的注解,而@Configuration是spring的注解。
@Configuration 可以理解为一个Configuration就是对应的一个Spring的xml版的容器;(beans)
@Component
@Bean
是两种使用注解来定义bean的方式。
@Component(和@Service和@Repository)用于自动检测和使用类路径扫描自动配置bean。注释类和bean之间存在隐式的一对一映射(即每个类一个bean)。
@Bean用于显式声明单个bean,而不是让Spring像上面那样自动执行它。它将bean的声明与类定义分离,并允许您精确地创建和配置bean。
@Bean则常和@Configuration注解搭配使用:
@Configuration
public class WebSocketConfig {
@Bean
public Student student(){
return new Student();
}
}
都可以使用@Autowired或者@Resource注解注入;
@Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑。
两者的区别:
如果想将第三方的类变成组件,你又没有没有源代码,也就没办法使用@Component进行自动配置,这种时候使用@Bean就比较合适了。
另外@Bean注解的方法返回值是对象,可以在方法中为对象设置属性。
@EnableAutoConfiguration
帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot,并创建对应配置类的Bean,并把该Bean实体交给IoC容器进行管理。
@ComponentScan: 扫描被@Component (@Service,@Controller)注解的 bean,注解默认会扫描该类所在的包下所有的类。
4、打包
打包插件
XML
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
加之前
加入后
双击
进入target目录
启动后别关闭和窗口
去浏览器访问
5、热部署
1、引入依赖
XML
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
运行后
ctrl + f9 进行热刷新