zoukankan      html  css  js  c++  java
  • Spring Boot基本配置

    本文参考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即可。

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

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

  • 相关阅读:
    HTML 5--Position HTML Elements
    第十三周项目5-字符串操作:字符统计
    第十三周项目4-数组的排序:冒泡排序
    第十三周项目3-成绩处理函数版
    第十三周项目2-成绩处理
    第十三周项目1-数组大折腾(二)
    第十三周项目1-数组大折腾(一)
    第十二周项目3-用递归方法求解(二)
    第十二周项目3-用递归方法求解(一)
    第十二周项目1-阅读程序(五)
  • 原文地址:https://www.cnblogs.com/lilinzhiyu/p/8116877.html
Copyright © 2011-2022 走看看