一、SpringBoot介绍
1.SpringBoot特点:
- SpringBoot项目不需要模板化的配置。
- SpringBoot中整合第三方框架时,只需要导入相应的stater依赖包,就能自动整合。
- SpringBoot默认只有一个.properties的配置文件,不推荐使用xml,后期会采用。java文件去编写配置文件
- SpringBoot工程在部署时,采用的是jar包的方式,内部自动依赖Tomcat容器,提供了多环境的配置。
- 微服务框架SpringCloud需要建立在SpringBoot的基础上。
二、SpringBoot快速入门
1.创建一个项目
- 第一次创建SpringBoot项目时,maven会下载大量的依赖,需要一定时间的等待(选择配置阿里云的私服)
- 创建项目后,为了目录结构简洁,可以选择把.mvn、.mvnw、.mvnw.cmd这三个文件删掉
2.SpringBoot的目录结构
2.1 pom.xml:
- 指定了一个父工程是SpringBoot,帮助我们声明了starter依赖的版本
- 项目元数据:包名、项目名、版本号
- 指定了properties信息:指定了java的版本号
- 导入依赖:默认情况导入spring-boot-starter-web、spring-boot-starter-test
- 插件:spring-boot-maven-plugin
2.2 .gitignore文件:
- 默认帮我们忽略了一些文件和目录
2.3 src目录
- src -> main -> java -> 包名 :启动类.java #需要将controller类,放在启动类的子包中或者同级包下
- src -> main -> resources -> application.properties #SpringBoot提供的唯一的配置文件
- src -> test: #测试使用
- src -> main -> resources -> static: #存放静态资源
- src -> main -> resources -> templates: #存储模板页面
2.4使用thymeleaf模板引擎SpringBoot的目录结构总结:
-
在springboot,我们可以使用下列方式处理静态资源
-
webjars localhost:8080/webjars/
-
public, static ,/**, resources localhost:8080/
-
优先级: resources >static>public
-
在template目录下的所有页面,只能通过controller来跳转
-
只要使用thymeleaf ,只需要导入对应的依赖就可以了!我们将html放在templa目录下即可
2.5 SpringBoot三种启动方式
- 运行启动类的main方法即可运行SpringBoot工程
- 采用maven命令启动SpringBoot项目 #命令:mvn spring-boot:run
- 采用jar包的方式运行,将项目打包成一个jar包,通过命令运行 #命令: java -jar文件名
三、SpringBoot常用注解
1. @Configuration和@Bean
- 使用SSM开发时,在xml文件中编写bean标签,但SpringBoot不推荐使用xml文件
- @Configuration注解相当于beans标签
- @Bean相当于bean标签
- id=“方法名” #注意:如果@Bean(name= “user1”),那么注解中name的属性优先级更高
- class=“方法的返回结果”
@Configuration//代表当前类是配置类
public class UserConfig {
@Bean() //构建一个实例,放在spring容器中,
public User user(){
User user = new User();
user.setId(1);
user.setName("张三");
return user;
/*
<beans......> #相当于@Configuration
<bean id ="user" class="实体类路径"/> # bean相当于 @Bean标签,User相当于class
</beans> #id="user"相当于user()方法名
*/
}
}
2. @SpringBootApplication
-
@SpringBootApplication是一个组合注解
-
@SpringBootApplication是@@Configuration注解,代表启动类是一个配置类
-
@EnableAutoconfiguration帮你实现自动装配,spring工程启动时,会运行一个SpringFactoriesLoader的类,然后加载META-INF/spring.factories配置类(已经开启的配置类),通过SpringFactoriesLoader中的load方法,以for循环的方式一个个加载。
-
好处:无需编写大量配置信息,按照SpringBoot提供好的约定整合即可。
-
坏处:导入了一个starter依赖,必须填写他必要的配置信息
-
手动关闭自动装配指定内容:@SpringBootApplication(exclude = QuartzAutoConfiguration.class)
3. @ComponentScan
- @ComponentScan相当于,帮助扫描注解
四、 SpringBoot常用配置
1. SpringBoot的配置文件格式
- SpringBoot的配置文件支持properties和yml,甚至还支持json,推荐使用yml文件格式:
- yml文件能根据换行和缩进帮助管理配置文件所在位置
- yml文件相比properties更轻量级
- yml文件的劣势:
- 严格遵循换行和缩进
- 在填写value时,一定要在 “:” 后面跟上一个空格
2. 多环境配置
- 在application.yml文件中添加一个配置项:
spring.profiles.active=环境名
- 在resource目录下,创建多个application-环境名.yml文件即可
- 在部署工程时,通过java -jar jar文件 --spring.profiles.active=环境指定路径
3.引入外部配置文件信息
-
和传统的SSM方式一样,通过@value的注释去获取properties/yml文件中的内容
-
如果在yml文件中需要编写大量的自定义配置,并且具有统一的前缀时,采用如下方式:
@ConfigurationProperties(prefix = "aliyun")
@Component
@Data
public class AliyunProperties{
private String xxxx:
....
....
}
aliyun:
xxxx:xxxxxxx
....
4.4 热加载
- 在pom.xml中
<!--热加载-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
<!--热加载-->
-
开启Java Compiler的自动build
热加载也要分情况设置,具体详细操作参考:点击跳转