栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

SpringBoot(二) 主程序详解和配置文件如何配置

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot(二) 主程序详解和配置文件如何配置

SpringBoot主程序详解

 1  4 @SpringBootApplication 5 public class HelloWorldMainApplication { 6  7     public static void main(String[] args) { 8  9         // Spring应用启动起来10         SpringApplication.run(HelloWorldMainApplication.class,args);11     }12 }

上段程序是一个SpringBoot主程序,入口方法。

@SpringBootApplication:Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;

@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) })public @interface SpringBootApplication {}

 

@SpringBootConfiguration:Spring Boot的配置类,标注在某个类上,表示这是一个Spring Boot的配置类。

@EnableAutoConfiguration:开启自动配置功能。

@EnableAutoConfigurationimportSelector:导入哪些组件的选择器。将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中。有了自动配置类,免去了我们手动编写配置注入功能组件等的工作。

SpringBoot 配置

 Spring Boot使用了一个全局的配置文件application.properties,放在src/main/resources目录下或者类路径的/config下。

 Sping Boot的全局配置文件的作用:修改SpringBoot自动配置的默认值。SpringBoot在底层都会给我们自动配置好。

 名称是固定的:application.properties  或者 application.yml

    yml是YAML(YAML Ain’t Markup Language)语言。它是以数据为中心的语言,它比json、xml更适合做配置文件。

配置实例:

    


  8081server.port=8081server:
  port: 8081

 

 YML语法   自定义属性1.基本语法

  书写形式 k:  v    ==>    表示一对键值对(冒号和v之间的空格必须有);

    以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的。

    属性值的英文大小写敏感。

server:
    port: 8081
    path: /hello
2.字面量

普通的值(数字,字符串,布尔):   k: v  ==> v 直接编写数字,字符串,布尔等值。如果是字符串添加双引号,则不会进行转义。使用单引号会进行转义。

对象: k : v

friends:
    lastName: zhangsan
    age: 20
//也可以和ajax一样编写
friends: {lastName: zhangsan,age: 18}

 

数组(list、set等):

pets: - cat - dog - pig//或者pets: [cat,dog,pig]

3.使用配置文件中的值

 1 //配置文件 2 person: 3     lastName: hello 4     age: 18 5     boss: false 6     maps: {k1: 11,k2: 12} 7     list: 8       - lisi 9       - wangwu10     dog:11       name: 小狗12       age: 1213 14 15 16 24 @Component25 @ConfigurationProperties(prefix = "person")26 public class Person {27 28     private String lastName;29     private Integer age;30     private Boolean boss;31     private List list;32     private Dog dog;33 }34 35 36 //pom.xml文件添加属性37 38     39       org.springframework.boot40       spring-boot-configuration-processor41       true42     

 还需要在spring Boot入口类加上@EnableConfigurationProperties并指明要加载哪个bean,如果不写ConfigBean.class,在建好的类那边添加。最后在Controller中引入ConfigBean使用即可。注意使用自动注入的注解。

在1.5的版本之后,需要添加@Configuration和@PropertySource(“classpath:xxxxxx.properties”)后才可以读取。

 1 10 @PropertySource(value = {"classpath:person.properties"})11 @Component12 @ConfigurationProperties(prefix = "person")13 //@Validated14 public class Person {}

 

4.使用配置文件生成随机数

在配置文件中${random} 可以用来生成各种不同类型的随机值,例如 生成 int 值、long 值或者 string 字符串。

secret=${random.value}
number=${random.int}
longnumber=${random.long}
uuid=${random.uuid}
 @Value和@Validated
 @ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定(松散语法)支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持

配置文件yml还是properties他们都能获取到值。

书写形式: @Value("${配置文件中的key}")。注意key要全称。

例如:@Value("${person.age}"),@Value("${person.dog.name}")

   计算: @Value("#{12*2}")  ==>  对应的值就是24

 

数据校验:@Valiadated注解自动校验。

 1 @Component 2 @ConfigurationProperties(prefix = "person") 3 @Validated 4 public class Person { 5    //lastName必须是邮箱格式 6     @Email 7     private String lastName; 8     //@Value("#{11*2}") 9     private Integer age;10     //@Value("true")11     private Boolean boss;12 13     private Date birth;14     private Map maps;15     private List lists;16     private Dog dog;17 }

 

配置文件读取优先级

application.properties和application.yml文件可以放在一下四个位置:

  • 外置,在相对于应用程序运行目录的/congfig子目录里。

  • 外置,在应用程序运行的目录里

  • 内置,在config包内

  • 内置,在Classpath根目录

按照优先级排序,src/main/resources/config下application.properties覆盖src/main/resources下application.properties中相同的属性

另外,如果在相同优先级位置同时有application.properties和application.yml,那么application.yml里面的属性就会覆盖application.properties里的属性。

Profile多环境配置

当应用程序需要部署到不同运行环境时,一些配置细节通常会有所不同,尤其是开发过程中的开发环境和生产环境的配置文件。
如果按照以前的做法,就是每次发布的时候替换掉配置文件,这样太麻烦了,Spring Boot的Profile就给我们提供了解决方案,命令带上参数就搞定。

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

application-test.properties:开发环境
application-prod.properties:生产环境

想要使用对应的环境,只需要在application.properties中使用spring.profiles.active属性来设置,值对应上面提到的{profile},也就是上述代码的test、prod这2个。

server:
  port: 8081spring:
  profiles:
    active: prod---server:
  port: 8083spring:
  profiles: test---server:
  port: 8084spring:
  profiles: prod  #指定属于哪个环境

原文出处:https://www.cnblogs.com/JiangLai/p/9966075.html  

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号