Spring Boot学习记录:Spring Boot核心

2019/05/08

Spring Boot核心

2019年5月8日15:56:29

基本设置

入口类和@SpringBootApplication

@SpringBootApplicaiton,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 {};

}

主要组合:@Configuration @EnableAutoConfiguration @ComponentScan @EnableAutoConfiguration:根据类路径中的jar包依赖自动配置项目 例如spring-boot-start-web依赖,会自动添加tomcat和Spring MVC的依赖,并自动配置

SpringBoot会自动扫描@SpringBootApplication所在类同级包和下级包的bean

关闭特定的自动配置

@SpringBootApplication(exclude ={DataSourceAutoConfigruation.class})

DIY banner
这个就是在src/main/resource 中新建个banner.txt 然后把banner弄上去。没啥用。。

  • 关闭banner在入口文件main中
    SpringApplication app = new SpringApplication(TestApplication.class, args);
    app.setShowBanner(false);
    app.run();
    

    但是我配置的SpringBoot根本没有setShowBanner这个方法。具体原因就先不去解决了

配置文件
src/main/resource源文件夹中的application.properties

starter pom
用于简化企业级开发绝大多数场景

xml配置 Spring Boot提倡零配置,但实际项目有时候必须用到xml则需要使用注释@ImportResource("classpath:some-context.xml","classpath :another-context.xml")

常规属性配置 在application.properties中配置的值,直接使用@Value
例如application.properties中配置:

book.name=spring boot

@Value("{$book.name}")
private String bookName;

但是上面的方法在有很多参数的时候显得很麻烦,这时候使用注解@ConfigurationProperties
例:

在application.properties中:
author.name=hiki
author.age=22

在需要的类上

@ConfigurationProperties(prefix="author")
public class AuthorSettings(){
private String name;
private Long age;
}

如果是要指定properties位置则:

@ConfigurationProperties(prefix="author",locations = {"classpath:config/author.properties"}))

日志配置

Spring Boot默认使用logback为日志框架
配置日志级别:
logging.file=D:/mylog/log.log
配置日志文件,格式为logging.level.包名=级别
logging.level.org.springframework.web=DEBUG

Profile配置|多环境配置
Profile是Spring用来针对不同环境对不同配置提供支持。例如生产环境(prod)和开发环境(dev)
用法:

  • application.properties所在文件夹新建properties,分别命名为application-prod.propertiesapplication-dev.properties
  • application.properties增加配置使用dev环境:
    spring.profiles.active=dev
    





项目代码
github: https://github.com/Hikiy
作者:Hiki
创建日期:2019.05.08
更新日期:2019.05.23

(转载本站文章请注明作者和出处 Hiki

Post Directory