Spring Boot基本配置

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

基本配置

入口类和@SpringBootApplication

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

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

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

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

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

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

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

关闭特定的自动配置

  经过@SpringBootApplication注解的参数exclude参数实现:spring-boot

@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便可。

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

 

 

本文内容是书中内容兼具本身的我的见解所成。可能在我的见解上会有诸多问题(毕竟知识量有限,致使认知也有限),若是读者以为有问题请大胆提出,咱们能够相互交流、相互学习,欢迎大家的到来,心成意足,等待您的评价。

相关文章
相关标签/搜索