@SpringBootApplication 是springboot的核心注解,它是一个组合注解:html
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
虽然定义使用了多个Annotation进行了原信息标注,但实际上重要的只有三个Annotation:java
@Configuration(@SpringBootConfiguration点开查看发现里面仍是应用了@Configuration)
这里的@Configuration对咱们来讲不陌生,它就是JavaConfig形式的Spring Ioc容器的配置类使用的那个@Configuration,SpringBoot社区推荐使用基于JavaConfig的配置形式,因此,这里的启动类标注了@Configuration以后,自己其实也是一个IoC容器的配置类。spring
@EnableAutoConfiguration,你们是否还记得Spring框架提供的各类名字为@Enable开头的Annotation定义?好比@EnableScheduling、@EnableCaching、@EnableMBeanExport等,@EnableAutoConfiguration的理念和作事方式其实一脉相承,简单归纳一下就是,借助@Import的支持,收集和注册特定场景相关的bean定义。springboot
@ComponentScan这个注解在Spring中很重要,它对应XML配置中的元素,@ComponentScan的功能其实就是自动扫描并加载符合条件的组件(好比@Component和@Repository等)或者bean定义,最终将这些bean定义加载到IoC容器中。app
spring Boot使用一个全局配置文件application.properties或application.yml,做用是对一些默认的配置进行修改,一个简单的案例:框架
将Tomcat默认端口8080修改为8088,默认的访问路径"/"改成"/lvmama"less
application.yml:dom
server: port: 8088 context-path: /lvmama
application.propertiesspring-boot
server.port: 8088 server.context-path: /lvmama
配置文件中${random} 能够用来生成各类不一样类型的随机值,从而简化了代码生成的麻烦,例如 生成 int 值、long 值或者 string 字符串。网站
dudu.secret=${random.value} dudu.number=${random.int} dudu.bignumber=${random.long} dudu.uuid=${random.uuid} dudu.number.less.than.ten=${random.int(10)}
java -jar xx.jar --server.port=9090
application.properties和application.yml文件能够放在一下四个位置:
一样,这个列表按照优先级排序,也就是说,src/main/resources/config下application.properties覆盖src/main/resources下application.properties中相同的属性,如图:
此外,若是你在相同优先级位置同时有application.properties和application.yml,那么application.yml里面的属性就会覆盖application.properties里的属性。
Profile是Spring用来针对不一样环境提供不一样配置的支持,全局Profile配置使用application-{profile}.properties。经过application.properties中设置spring.profiles.active值
在src/resources/下新建application-normal.yml和application-trunk.yml文件并分别配置
application-normal.yml
server: port: 8080 context-path: /lvmama/normal
application-trunk.yml
server: port: 80 context-path: /lvmama/trunk
application.properties中配置默认值:
spring: profiles: active: trunk
http://blog.javachen.com/2016...
http://blog.csdn.net/lihe2008...