一、启动SpringBoot应用的三种方式:
1.编辑器Run启动
2.进入项目目录:mvn spring-boot:run
3.进入项目目录 : mvn install 编译项目,进入target目录,运行命令java -jar [编译好的jar文件]
二、属性配置:
1.@Value
2.@Component
3.@ConfigurationProperties
三、基于注解的Spring容器装配:
创建容器上下文实例,传入配置类.class
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
通过context获取Bean实例,context.getBean();1.传入Class文件对象,2.传入Bean名称获取
使用到的注解
@Configuration
@Bean
@Scope("prototype"):设置实例为多例
四、Bean初始化和销毁的三种方式:
1.被实例化的Bean实现两个接口,InitializingBean, DisposableBean分别实现afterPropertiesSet(),destory()两个方法
2.在Bean中自定义销毁核初始化时的两个方法,在配置类的装备Bean的注解中加入 @Bean(initMethod = "init",destroyMethod = "destory")指定Bean初始化和销毁时所调用的方法
3.在Bean中自定义销毁和初始化时的两个方法,分别在方法上加入@PostConstruct和@PreDestory注解
五、Bean的依赖注入的注解:
@Autowired
@Qualifier("指定注入哪个Bean")
@Primary用在Bean实例上,当有多个相同的实例时,注入时优先注入该Bean
六、Bean实例中注入ApplicationContext对象:
1.@Autowired注解
2.构造函数注入(有局限性,构造函数只能有一个)
3.实现ApplicationContextAware接口
被容器管理的Bean 实现BeanPostProcessor接口可以在Bean实例化之后进行函数回调,代理对象
七、获取application.properties or yml文件中的属性值:
1.通过@Value注解
2.注入Environment对象,通过Environment中的getProperties方法获取
八、读取application.properties or yml默认路径:
1.在classpath:路径下
2.在classpath://config目录下
3.在file://在file文件下
4.在file:config文件夹下
更改application.properties文件名称和位置后读取:
1.IDEA导航栏点击Run Edit Configuration 在Program arguments设置参数:--spring.config.name="更改后的文件名"
2.设置参数:--spring.config.location="classpath:路径+文件名"/系统盘全路径
九、读取其他的配置文件:
1.@PropertySource
2.@ConfigurationProperties 指定某些配置的前缀
3.动态读取本地或远程的配置文件:自定义类实现EnvironmentPostProcessor接口
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
try (InputStream fis = new FileInputStream("E:\\temp\\host.properties")) {
System.out.println("开始读取配置");
Properties properties = new Properties();
properties.load(new InputStreamReader(fis,"utf-8"));
PropertiesPropertySource propertySource = new PropertiesPropertySource("***",properties);
environment.getPropertySources().addLast(propertySource);
}catch (IOException e){
e.printStackTrace();
}
}
十、项目开发和上线版本配置更换问题:
1.SpringApplication application = new SpringApplication(SbconfigApplication.class);
//代码编程方式添加配置版本为application-dev.properties (也会加载默认的application.properties文件)
application.setAdditionalProfiles("dev");
2.通过添加启动参数方式:IDEA导航栏点击Run Edit Configuration 在Program arguments设置参数:--spring.profiles.active=test
指定某个开发环境下装备某个Bean:
使用@Profile("指定在哪种环境下装配Bean test or dev")注解
十一、SpringBoot自动配置:
实现Condition接口
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
根据逻辑判断返回false或者true
}
要搭配@Conditional注解(指定字节码对象选择装配Bean或者不装配)可以用在方法或者类上
@EnableConfigurationProperties:将配置文件的属性值注入到实体类中
@Import(选择导入class 交给spring管理),也可以实现ImportSelector接口,返回全限定类路径的字符串数组可以批量导入
自定义注册实例需实现ImportBeanDefinitionRegistrar接口:
BeanDefinitionBuilder bdb = BeanDefinitionBuilder.rootBeanDefinition(WDG.class);
BeanDefinition beanDefintion = bdb.getBeanDefinition();
beanDefinitionRegistry.registerBeanDefinition("wdg",beanDefintion);
通过@Import(实现类的class文件对象)
十二、事件监听:
1.自定义事件,一般是继承ApplicationEvent抽象类
2.定义事件监听器,一般是实现ApplicationListener接口
3.启动的时候,
需要把监听器加入到Sping容器中去addListeners(监听器实现类)
或者使用注解@Component
或者配置文件中配置context.listener.classes=监听器实现类类路径
或者使用@EventListener注解,在方法上加入@EventListener注解,该类需要纳入到Spring容器中管理
4.发布事件:context.publishEvent(事件实体)
十三、Spring容器初始化回调接口:ApplicationContextInitializer
使用步骤:
1.自定义类实现ApplicationContextInitializer接口
2.在项目启动注册ApplicationContextInitializer
注册方法:
1.SpringApplication.addInitializers
2.配置文件中配置context.initializer.classes=类路径
3.可以通过spring.factories机制(注册listener监听器也可以使用这种方式)
CommandLineRunner ,ApplicationRunner接口是在容器启动成功后的最后一步的回调
两者区别:
CommandLineRunner 的参数是最原始的参数,没有作任何处理
ApplicationRunner 的参数是ApplicationArguments.是对原始参数做了进一步的封装
关闭Banner Logo:
run()方法调用前:
application.setBannerMode(Banner.Mode.OFF);