SpringBoot:applicationContext.[erproties、yml、yaml以及向容器注入组件


引导类

本质上是一个配置类(@Configuration),他会扫描当前包及其子包的注解(@ComponentScan的默认情况)


tomcat

springboot内嵌了一个tomcat服务器。spring容器中有一个tomcat对象。


在application.properties中可以配置若干配置。如:

# 应用名称
spring.application.name=demo_2
# 应用服务 WEB 访问端口
server.port=80

优先级:xx.properties>xx.yml>xx.yaml

多个配置文件,共生叠加,并相互覆盖。

yaml重数据而轻格式


SpringBoot可以将整个项目打包成jar包,并通过命令行的方式启动。


    
        
            org.springframework.boot
            spring-boot-maven-plugin
        
    


如何给容器添加组件@Configuration

在配置类上使用注解@Bean给容易注册组件。默认是单实例的。

外部无论对配置类中的这个组件注册方法调用多少次,都是这钱在容器中注册的那一个单实例Bean。

@Configuration(proxyBeanMethods = ture)时,springboot创建的配置类的代理对象调用方法时,总会检查这个组件是否在容易中,以确保组件单实例。如果为false时,则是一个普通的java对象,此时创建的user和user1不是同一个。默认为true。

@Configuration(proxyBeanMethods = true)
public class Conf {
    @Bean
    public User getUser(){
        return new User();
    }
}

public static void main(String[] args) {
    ConfigurableApplicationContext run = SpringApplication.run(Demo1Application.class, args);
    Conf bean = run.getBean(Conf.class);
    User user = bean.getUser();
    User user1 = bean.getUser();
    System.out.println(user==user1);
}
//打印结果为true;

为true:每一次调用都会去检查容器中有没有相应的组件,花费时间较多。

为false:直接创建一个新的返回,花费时间较少。


@Import

可以通过这个注解来向容器中添加组件

@Import({User.class})

相关