SpringBoot 知识笔记

一、启动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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值