@SpringBootApplication是 Spring Boot 的核心注解,它是一个组合注解,该注解组合了:@Configuration、@EnableAutoConfiguration、@ComponentScan;
其中,@EnableAutoConfiguration 让 Spring Boot 根据类路径中的 jar 包依赖为当前项目进行自动配置,例如,添加了 spring-boot-starter-web 依赖,会自动添加 Tomcat 和 Spring MVC 的依赖,那么 Spring Boot 会对 Tomcat 和 Spring MVC 进行自动配置。Spring Boot 还会自动扫描 @SpringBootApplication 所在类的同级包以及下级包里的 Bean
@RestController:该注解是@Controller和@ResponseBody的合体
@RequestMapping("/hello'')
一个最简单的HelloWorld程序所需要的依赖(写在pom.xml文件中):
- spring-boot-starter-parent
- spring-boot-starter-web
- spring-boot-starter-test
- spring-boot-maven-plugin(这是一个打包插件)
spring-boot-starter-parent:
有了这个,当前的项目才是 Spring Boot 项目,spring-boot-starter-parent 是一个特殊的 starter ,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖就可以省去 version 标签。
关于具体 Spring Boot 提供了哪些 jar 包的依赖,我们可以查看本地 Maven 仓库下:repositoryorgspringframeworkbootspring-boot-dependencie s2 .0. 1.RELEASEspring-boot-dependencies-2.0.1.RELEASE.pom 文件来查看
Spring Boot 的配置文件
Spring Boot 使用一个全局的配置文件 application.properties 或 application.yml,放置在【src/main/resources】目录或者类路径的 /config 下。
Spring Boot 不仅支持常规的 properties 配置文件,还支持 yaml 语言的配置文件。yaml 是以数据为中心的语言,在配置数据的时候具有面向对象的特征。
Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改。
我们直接把 .properties 后缀的文件删掉,使用 .yml 文件来进行简单的配置,然后使用 @Value 来获取配置属性:
重启 Spring Boot ,输入地址:localhost:8080/hello 能看到正确的结果:
注意:我们并没有在 yml 文件中注明属性的类型,而是在使用的时候定义的
你也可以在配置文件中使用当前配置:
仍然可以得到正确的结果:
仍然可以得到正确的结果:
问题:
封装配置信息
我们可以把配置信息封装成一个类,首先在我们的 name 和 age 前加一个 student 前缀,然后新建一个 StudentProperties 的类用来封装这些信息,并用上两个注解:
- @Component:表明当前类是一个 Java Bean
- @ConfigurationProperties(prefix = "student"):表示获取前缀为 sutdent 的配置信息
这样我们就可以在控制器中使用,重启得到正确信息:
Spring Boot 热部署
在目前的 Spring Boot 项目中,当发生了任何修改之后我们都需要重新启动才能够正确的得到效果,这样会略显麻烦,Spring Boot 提供了热部署的方式,当发现任何类发生了改变,就会通过 JVM 类加载的方式,加载最新的类到虚拟机中,这样就不需要重新启动也能看到修改后的效果了。
做法也很简单,修改 pom.xml 即可!我们往 pom.xml 中添加一个依赖就可以了:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
</dependency>
重新启动 Spring Boot ,然后修改任意代码,就能观察到控制台的自动重启现象: