@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 来获取配置属性:




java springboot使用高德地图获取定位 springboot获取路径_springboot获取项目路径


重启 Spring Boot ,输入地址:localhost:8080/hello 能看到正确的结果:


java springboot使用高德地图获取定位 springboot获取路径_spring_02


注意:我们并没有在 yml 文件中注明属性的类型,而是在使用的时候定义的

你也可以在配置文件中使用当前配置:


java springboot使用高德地图获取定位 springboot获取路径_springboot热加载_03


仍然可以得到正确的结果:


java springboot使用高德地图获取定位 springboot获取路径_springboot 获取项目路径_04


仍然可以得到正确的结果:

问题:

封装配置信息

我们可以把配置信息封装成一个类,首先在我们的 name 和 age 前加一个 student 前缀,然后新建一个 StudentProperties 的类用来封装这些信息,并用上两个注解:

  • @Component:表明当前类是一个 Java Bean
  • @ConfigurationProperties(prefix = "student"):表示获取前缀为 sutdent 的配置信息


java springboot使用高德地图获取定位 springboot获取路径_springboot 获取项目路径_05


这样我们就可以在控制器中使用,重启得到正确信息:


java springboot使用高德地图获取定位 springboot获取路径_springboot获取项目路径_06


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 ,然后修改任意代码,就能观察到控制台的自动重启现象: