本文参考javaEE开发的颠覆者SpringBoot实战第一版

基本配置

入口类和@SpringBootApplication

  Spring Boot通常有一个名为*Application的入口类,且入口类有一个main方法,这个main方法就是标志的java应用入口方法。调用main方法就可以启动springboot应用。

  @SpringBootApplication是springboot的核心注解,它是一个组合注解

  涉及到启动Springboot项目的核心注解:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan。

  注:@EnableAutoConfiguration可以让SpringBoot根据类路径中的jar包依赖为当前项目进行配置。

    例如:添加了spring-boot-start-web依赖,就会自动添加Tomcat与SpringMVC依赖,且会对Tomcat和SpringMVC进行配置。

       添加了spring-boot-start-data-jpa依赖,springboot就会进行JPA的相关配置。

  注:SpringBoot会自动扫描@SpringBootApplication所在类的同级包以及下级包里的Bean(若为JPA还会扫描@Entity)。所以一般入口类都会放在包的根目录下。

关闭特定的自动配置

  通过@SpringBootApplication注解的参数exclude参数实现:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

定值Banner

  (个人认为这个有点恶趣味啊,哈哈。我还是很喜欢默认的banner)

  1.修改banner

    在springboot启动时会有默认的图标:

    

  在src/main/resources下新建一个banner.txt

  可以在http://patorjk.com/software/taag网站生成字符,我敲入的是memeda,然后将生成的字符复制给banner.txt。

  再启动时就可以实现改变:

    

  2.关闭banner

  (1)修改main中的代码:

    注:这一段是与书中有出入的,书中使用的是app.setShowBanner(false)

    public static void main(String[] args) {
SpringApplication app = new SpringApplication(LilinlearnApplication.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
}

  (2)或使用fluent API修改为:

    public static void main(String[] args) {
new SpringApplicationBuilder(LilinlearnApplication.class)
.bannerMode(Banner.Mode.OFF)
.run(args);
}

SpringBoot配置文件

  SpringBoot使用一个全局的配置文件application.properties或application.yml,配置文件路径:src/main/resource目录下或类路径下的/config下。

    注:这两种配置文件的区别是格式不一致,示例均采用.properties格式,但实际上以后的主流应该是以yml为主的。

  示例:

    修改端口和与默认路径:

    server.port=9090

    server.context-path=/helloboot。

starter pom

  Springboot为我们提供了简化企业级开发绝大多数场景的starter pom。只要使用了所需要的starter pom,SpringBoot就会为我们提供自动装配的Bean。

  还有很多,具体的可以看官方文档,或者自己去书上看。

使用XML配置

  SpringBoot提倡零配置,即无XML配置,但实际上有些特殊的配置需要使用XML配置。我们可以通过Spring提供的@ImportResource来加载XML配置

@ImportResource({"classpath:some-context.xml","classpath:another-context.xml"})

外部配置

  SpringBoot可以使用properties文件、yaml文件或者命令行参数作为外部配置。

  命令行参数配置:

    SpringBoot可以基于jar包运行,打成jar包的程序可以直接通过下面的命令行运行,并修改Tomcat端口号:

java -jar xx.jar --server.port=9090

  常规属性配置:

    只需要在application.properties中定义属性,直接在类中使用@Value注入即可。

    (1)在application.properties中增加属性:

      book.author=huyifei

      book.name=xueshanfeihu

    (2)在类中获取:

@RestController
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class LilinlearnApplication { @Value("${book.author}")
private String author; @Value("${book.name}")
private String name; @Autowired
private Author authora;
@RequestMapping("/")
public String index() {
return "??????" + author + name + " " + authora.getAge() + " | " + authora.getName();
} public static void main(String[] args) {
new SpringApplicationBuilder(LilinlearnApplication.class)
.bannerMode(Banner.Mode.OFF)
.run(args);
}
}

  类型安全的配置(基于properties)

   若按照常规属性进行注入,你会发现如果多次复用会出现很多冗余的代码,SpringBoot就为我们提供了方法,使用@ConfigurationProperties将properties属性和一个Bean及其属性关联,从而实现安全配置。

   在application.properties上添加:

    mail.name=eamil

    mial.age=18

   我们也可以新建一个properties文件,这时我们需要使用@PropertiesSource将添加的文件的位置指定。

    注:这里与书中内容不同,书中的@ConfigurationProperties的locations属性并不存在(看了源码确实没有),可能是因为SpringBoot的版本不同(书中1.3,现在使用的是1.5.9)    

@Component
@PropertySource(value = "classpath:test.properties")
@ConfigurationProperties(prefix = "mail")
public class Author { private String name; private String age; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
}
}

  日志配置

    默认情况下,SpringBoot使用Logback作为日志框架。

    配置日志级别:

      logging.file=D:/mylog/log.log

    配置日志文件,格式为logging.level.包名=级别:

      logging.level.org.springframework.web=DEBUG

  Profile配置

    Profile是Spring针对不同环境不同配置的支持。

    格式为:application-{profile}.properties。

    只需要在application.properties中设置spring.profiles.active=prod来指定活动的profile即可。

    注:这样可以实现测试环境、开发环境、线上环境分离。

本文内容是书中内容兼具自己的个人看法所成。可能在个人看法上会有诸多问题(毕竟知识量有限,导致认知也有限),如果读者觉得有问题请大胆提出,我们可以相互交流、相互学习,欢迎你们的到来,心成意足,等待您的评价。

Spring Boot基本配置的更多相关文章

  1. 玩转spring boot——properties配置

    前言 在以往的java开发中,程序员最怕大量的配置,是因为配置一多就不好统一管理,经常出现找不到配置的情况.而项目中,从开发测试环境到生产环境,往往需要切换不同的配置,如测试数据库连接换成生产数据库连 ...

  2. Spring Boot 属性配置和使用

    Spring Boot 属性配置和使用 Spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置. Spring Boot ...

  3. Spring Boot 属性配置和使用(转)

    Spring Boot 属性配置和使用 Spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置. Spring Boot ...

  4. Sping Boot入门到实战之入门篇(四):Spring Boot自动化配置

    该篇为Sping Boot入门到实战系列入门篇的第四篇.介绍Spring Boot自动化配置的基本原理与实现.   Spring Boot之所以受开发者欢迎, 其中最重要的一个因素就是其自动化配置特性 ...

  5. Springboot 系列(三)Spring Boot 自动配置原理

    注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 关于配置文件可以配置的内容,在 Spring ...

  6. 转:spring boot log4j2配置(使用log4j2.yml文件)---YAML 语言教程

    转:spring boot log4j2配置(使用log4j2.yml文件) - CSDN博客http://blog.csdn.net/ClementAD/article/details/514988 ...

  7. Spring Boot自动配置与Spring 条件化配置

    SpringBoot自动配置 SpringBoot的自动配置是一个运行时(应用程序启动时)的过程,简化开发时间,无需浪费时间讨论具体的Spring配置,只需考虑如何利用SpringBoot的自动配置即 ...

  8. Spring Boot自动配置原理、实战

    Spring Boot自动配置原理 Spring Boot的自动配置注解是@EnableAutoConfiguration, 从上面的@Import的类可以找到下面自动加载自动配置的映射. org.s ...

  9. Spring Boot 揭秘与实战 附录 - Spring Boot 公共配置

    Spring Boot 公共配置,配置 application.properties/application.yml 文件中. 摘自:http://docs.spring.io/spring-boot ...

  10. Spring Boot 日志配置

    Spring Boot 日志配置 默认日志 Logback: 默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台.在运行应用程序和其他例子时,你应该已经看到很 ...

随机推荐

  1. Mysql主从复制原理详解

    一.为什么要做主从同步 1.读写分离,降低对主数据库的IO消耗 2.避免数据丢失 3.提高业务系统性能 二.主从同步和集群的区别 1.主从同步 一般需要两台及以上数据库服务器即可(一台用于写入数据,一 ...

  2. 基于SSM的单点登陆03

    TbUser.java和TbUserExample.java,TbUserMapper.java,TbUserMapper.xml由mybatis框架生成. generatorConfig.xml & ...

  3. 主攻ASP.NET MVC4.0之重生:使用反射获取Controller的ActionResult

    示例代码 public ActionResult TypeOfForName() { Type typeinfo = typeof(CustomerClassController); //typeof ...

  4. R和Python小数的保留

    R: 1.保留几位有效数字: signif(x,digits) 2.保留几位小数: round(x,digits) Python: 1.“%.2f”%a

  5. nodejs往文件写入内容代码

    const fs = require("fs"); // fs.wirteFile有三个参数 // 1,第一个参数是要写入的文件路径 // 2,第二个参数是要写入得内容 // 3, ...

  6. 剑指Offer——圆圈中最后剩下的数(约瑟夫环)

    Question 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后, ...

  7. iframe标签的子父页面调用函数和属性

    在使用iframe标签时,总想通过子页面调用父页面的一些方法和属性.今天终于发现了. 1在父页面写一个函数 //让子页面来调用此方法,控制导航栏 function childfunc(){ alert ...

  8. stacktach和ceilometer

    架构图 Yagi 从rabbitmq拿到 notifications并传递给Yagi Handlers 链. Yagi Handlers 包括: Shoebox for long-term archi ...

  9. Redis 存储机制

    Redis存储机制分成两种Snapshot和AOF.无论是那种机制,Redis都是将数据存储在内存中. Snapshot工作原理: 是将数据先存储在内存,然后当数据累计达到某些设定的伐值的时候,就会触 ...

  10. LSM树——LSM 将B+树等结构昂贵的随机IO变的更快,而代价就是读操作要处理大量的索引文件(sstable)而不是一个,另外还是一些IO被合并操作消耗。

    Basic Compaction 为了保持LSM的读操作相对较快,维护并减少sstable文件的个数是很重要的,所以让我们更深入的看一下合并操作.这个过程有一点儿像一般垃圾回收算法. 当一定数量的ss ...