SpringBoot要求,项目要继承SpringBoot的起步依赖
spring-boot-starter-parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
SpringBoot要集成SpringMVC进行Controller的开发,所以项目要导入web的启动依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
引导类必须放在与controller等包同级目录
package com.xiaojian;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
package com.xiaojian.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class QuickController {
@RequestMapping("/quick")
@ResponseBody
public String quick(){
return "hello SpringBoot";
}
}
@ResponseBody 必须加上。
浏览器访问 : localhost:8080/quick 显示: hello SpringBoot
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
我们在开发中反复修改类、页面等资源,每次修改后都是需要重新启动才生效,这样每次启动都很麻烦,浪费了大量的时间,我们可以在修改代码后不重启就能生效,在pom.xml中添加如下配置就可以实现这样的功能,我们称之为热部署
<!--热部署配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
ps:IDEA进行SpringBoot进行热部署失败的解决方案
@SpringBootApplication 注解 相当于配置三个注解
@SpringBootConfiguration // 相当于 @Configuration ,配置Spring容器(@Bean,注册bean对象,标注在返回某个实例的方法)
@EnableAutoConfiguration // 自动配置
@ComponentScan( // 组件扫描,扫描与引导类同级目录包下的bean
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
@AutoConfigurationPackage
将主配置类(@SpringBootApplication标注的类)同级目录下的所在包,及下面所有子包里面的所有组件扫描到Spring容器
@Import注解:
通过导入的方式实现把实例加入springIOC容器中
AutoConfigurationImportSelector:
导入哪些组件的选择器
将所有需要导入的组件以全类名的方式返回;这些组件被添加到容器中。
会给容器中导入非常多的自动配置类(xxxAutoConfiguration);
就是给容器中导入这个场景需要的所有组件,并配置好这些组件。
在该类中获取全类名的方法中,调用
getCandidateConfigurations( … )
loadFactoryNames( … ) ,使用类加载器加载目标位置的资源(也就是需要导入的组件全类名),并存入Properties中返回
SpringBoot 在启动的时候,从springboot的autoconfigure包的类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值(组件全类名),将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作。
以前我们需要自己配置的东西,自动配置类帮我们做了(对比SSM中的各大配置属性)