zoukankan      html  css  js  c++  java
  • Spring Boot核心

    基本配置

    入口类和@SpringBootApplication

    Spring Boot通常有一个名为*Application的入口类,入口类里面有一个mian方法,这个main方法其实就是一个标准的java应用的入口方法,在main方法中使用SpringApplication.run,启动Spring Boot应用项目

    @SpringBootApplication是Spring Boot的核心注解,它是一个组合注解,源码如下:

    @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 {
        @AliasFor(
            annotation = EnableAutoConfiguration.class
        )
        Class<?>[] exclude() default {};
    
        @AliasFor(
            annotation = EnableAutoConfiguration.class
        )
        String[] excludeName() default {};
    
        @AliasFor(
            annotation = ComponentScan.class,
            attribute = "basePackages"
        )
        String[] scanBasePackages() default {};
    
        @AliasFor(
            annotation = ComponentScan.class,
            attribute = "basePackageClasses"
        )
        Class<?>[] scanBasePackageClasses() default {};
    }
    

    @SpringBootApplication注解主要组合了@Configuration,@EnableAutoConfiguration,@ComponentScan;若不使用@SpringBootApplication注解,则可以在入口类上直接使用@Configuration,@EnableAutoConfiguration,@ComponentScan

    其中,@EnableAutoConfiguration 让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置。

    例如,添加了spring-boot-starter-web依赖,会自动添加Tomcat和Spring MVC的依赖,那么Spring Boot会对Tomcat和Spring MVC进行自动配置。

    又如,添加了spring-boot-starter-data-jpa依赖,Spring Boot会自动进行JPA相关的配置。

    Spring Boot 会自动扫描@SpringBootApplication所在类的同级包以及下级包里的Bean(若为JPA项目还可以扫描标注@Entity的实体类)。建议入口类放置的位置在groupld+arctifactID组合的包名下。

    关闭特定的自动配置

    通过上面的@SpringBootApplication的源码我们可以看出,关闭特定的自动配置应该使用@SpringBootApplication注解的exclude参数

    @ SpringBootApplication (exclude ={ DataSourceAutoconfiguration.class})
    

    定制Banner

    1.修改Banner
    (1)在SpringBoot启动的时候会有一个启动图案

    (2)我们在src/main/resources 下新建一个banner.txt
    (3)通过http://patorjk.com/software/taag网站生成字符,如敲入的为"anxin",将网站生成的字符复制到banner中
    (4)这时再启动程序,图案将变为这个样子

    Spring Boot的配置文件

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

    Spring Boot 不仅支持常规的properties配置文件,还支持yaml语言的配置文件.yaml是以数据为中心的语言,在配置数据的时候具有面向对象的特征

    Spring Boot的全局配置文件的作用是对一些默认配置的配置值进行修改
    1.简单演示一下
    将Tomcat的默认端口号8080修改为6060,并将默认的访问路径“/”修改为“/helloboot”。
    可以在application.properties中添加:

    server.port=6060
    server.servlet.context-path=/helloboot
    

    这样我们再去访问服务器就是这样的

    starter pom

    Spring Boot为我们提供了简化企业级开发绝大多数场景的starter pom,只要使用了应用场景所需要的starter pom,相关的技术配置将会消除,就可以得到Spring Boot为我们提供的自动配置的Bean。
    1.官方starter pom

    2.第三方starter pom
    除官方的starter pom外,还有第三方为Spring Boot 所在的starter pom

    使用xml配置

    Spring Boot 提倡零配置,即无xml配置,但是在实际项目中,可能有一些特殊要求你必须使用xml配置,这时我们可以通过Spring 提供的@ImportResource来加载xml配置

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

    外部配置

    Spring Boot 允许使用properties文件、yaml文件或者命令行参数作为外部配置。

    命令行参数配置

    Spring Boot可以基于jar包运行的,打成jar包的程序可以直接通过下面命令运行

    java -jar xx.jar
    

    可以通过以下命令修改Tomcat端口号

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

    常规属性配置

    之前我们在常规Spring环境下,注入properties文件里的值的方式,通过@PropertySource指明properties文件的位置,然后通过@Value注入值,在Spring Boot里,我们只需要application.properties定义属性,直接使用@Value注入即可

    (1)application增加属性

    book.author=wangjinlong
    book.name=spring boot
    

    (2)修改入库类

    
    @SpringBootApplication
    @RestController
    public class Springbootch6Application {
    
        @Value("${book.author}")
        private String bookAuthor;
        @Value("${book.name}")
        private String bookName;
    
        @RequestMapping("/")
        public String index(){
            return "book name is:"+bookName+"and book author is:"+bookAuthor;
        }
        
        public static void main(String[] args) {
            SpringApplication.run(Springbootch6Application.class, args);
        }
    }
    

    (3)运行效果

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

    上面代码中使用@Value注入每个配置在实际项目中会显得格外麻烦,因为我们的配置通常会是许多个,若使用上例的方式则要使用@Value注入很多次。

    Spring Boot还提供了基于类型安全的配置方式,通过@ConfigurationProperties将properties属性和一个Bean及其属性关联,从而实现类型安全的配置。

    (1)新建Spring Boot 项目
    (2)添加配置,即在application.properties上添加

    author.name=wjl
    author.age=20
    

    当然,我们也可以新建一个properties文件,这就需要我们使用@PropertySource的属性value 里指定properties的位置,且需要在入口类上配置。

    (3)类型安全的Bean

    
    @Component
    @ConfigurationProperties(prefix = "author")
    @PropertySource(value = "classpath:author.properties", encoding = "UTF-8")
    public class AuthorSettings {
        private String name;
        private Long age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Long getAge() {
            return age;
        }
    
        public void setAge(Long age) {
            this.age = age;
        }
    }
    

    通过@ConfigurationProperties中的prefix属性指定properties的配置的前缀
    (4)检验代码

    @RestController
    @SpringBootApplication
    public class Ch6_2_3Application {
    
        @Autowired
        public AuthorSettings authorSettings;
    
        @RequestMapping("/")
        public String index(){
            return "author name is   "+authorSettings.getName()+"   and author age is  "+authorSettings.getAge();
        }
    }
    

    (5)运行效果

    日志配置

    Spring Boot 支持Java Util Logging、Log4J、Log4J2和Logback作为日志框架,无论使用哪种日志框架,Spring Boot已为当前使用日志框架的控制台输出及文件输出做好了配置
    默认情况下,Spring Boot 使用Logback作为日志框架
    配置日志级别

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

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

    logging.level.org.springframework.web=DEBUG
    

    Profile配置

    Profile是Spring用来针对不同的环境对不同的配置提供支持的,全局Profile配置使用application-{profile}.properties(如application-prod.properties)。

    通过在application.properties 中设置spring.profiles.active=prod 来指定活动的Profile。

    下面将做一个最简单的演示,如我们分为生产(prod)和开发(dev)环境,生产环境下端口号为80,开发环境下端口为8888。
    (1)新建Spring Boot项目
    (2)生产和开发环境下的配置文件如下
    application-prod.properties

    server.port=80
    

    application-dev.properties

    server.port=8888
    

    (3)运行
    application.properties增加

    spring.profiles.active=dev
    

    运行效果

    这边是参考的javaEE开发的颠覆者这本书来做的笔记
    当然我们这边只是说了一小步部分的核心技术,还有很多内容需要大家自己去做深入的研究
    写的不好还有不懂的地方,大家可以留言一下 我会尽量解决
    觉得对你帮助的话,就点个赞把!
    by安心

  • 相关阅读:
    sql语句技巧
    逻辑查询处理的步骤
    left join 和 left outer join的区别
    SQL 笛卡尔积
    SQL 分类
    显示数据库中的表
    数据库备份 恢复
    增删主键及修改表名
    Securing Data笔记
    System Monitoring之"文件系统"
  • 原文地址:https://www.cnblogs.com/anxin0/p/9970337.html
Copyright © 2011-2022 走看看