![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
SpringBoot
文章平均质量分 73
springboot
yaoshengting
这个作者很懒,什么都没留下…
展开
-
Spring的BeanFactoryPostProcessor扩展点实现类ConfigurationClassPostProcessor
BeanDefinitionRegistryPostProcessor对标准 {@link BeanFactoryPostProcessor} SPI 的扩展,允许在常规 BeanFactoryPostProcessor 检测开始之前进一步地注册bean定义。特别是BeanDefinitionRegistryPostProcessor 可以进一步地注册bean 定义,这些定义反过来定义 BeanFactoryPostProcessor 实例。public interface BeanDefinition原创 2022-02-11 18:00:06 · 639 阅读 · 0 评论 -
Spring getBean和createBean的过程及三级缓存
DefaultSingletonBeanRegistry三级缓存在该类中,有如下三个属性,是bean的三级缓存/** 一级缓存,保存singletonBean实例的映射: bean name --> bean instance */private final Map<String, Object> singletonObjects = new ConcurrentHashMap(256);/** 二级缓存,保存早期未完全创建的Singleton实例的映射: bean name -原创 2021-09-30 13:50:02 · 420 阅读 · 0 评论 -
AbstractBeanDefinition的initMethodName/destroyMethodName属性及@PostConstruct/@PreDestroy
在AbstractBeanDefinition中有两个属性private String initMethodName; private String destroyMethodName;xml的相关配置他们对应的是xml配置文件中bean标签的如下两个属性:destroy-method它的作用是在销毁bean之前可以执行指定的方法。注意:必须满足scope=“singleton”,并且destroy方法参数个数不能超过1,并且参数类型只能为boolean。init-metho原创 2021-09-27 12:35:00 · 241 阅读 · 0 评论 -
AbstractBeanDefinition的MethodOverrides属性及@LookUp
使用场景及问题在Spring的诸多应用场景中bean都是单例形式,当一个单例bean需要和一个原型bean组合使用或者一个原型bean和另一个原型bean组合使用时,我们通常都是将依赖以属性的方式放到bean中来引用,然后以@Autowired来标记需要注入的属性。但是这种方式在bean的生命周期不一样的时候将会出现问题,假设单例bean A需要一个原型bean B,我们在A中注入bean B,每次调用bean A中的方法时都会用到bean B,Spring Ioc容器只在容器初始化时执行一次,也就是b原创 2021-09-26 18:09:10 · 348 阅读 · 0 评论 -
AbstractBeanDefinition的autowireMode自动装配模式属性
在AbstractBeanDefinition中有一个属性是autowireMode,该属性表示自动装配模式在Spring中,注入方式有两种通过set方法通过构造函数(如果有多个构造函数会选择参数多的构造方法)手动装配注入:@Resource: 默认是通过name来查找注入值,如果不存在就报错@Autowired 通过类型查找(类型),然后再通过nameAutowireMode(自动装配模型):在spring中有四种模式分别是:AUTOWIRE_NO = 0:默认装配模式原创 2021-09-26 14:22:06 · 1130 阅读 · 0 评论 -
BeanDefinition接口关系图及相关实现类
BeanDefinition关系图BeanDefinitionBeanDefinition接口用于描述一个bean实例的属性及构造参数等元数据;主要提供了父beanname,bean类名,作用域,懒加载, bean依赖,自动注入候选bean,等熟悉的设置与获取操作。同时提供了判断bean是否为单例、原型模式、抽象bean的操作,及获取bean的描述,资源描述,属性源,构造参数,原始bean定义等操作。public interface BeanDefinition extends AttributeA原创 2021-09-24 15:34:09 · 259 阅读 · 0 评论 -
Spring的post processor工具类PostProcessorRegistrationDelegate
PostProcessorRegistrationDelegatePostProcessorRegistrationDelegate是AbstractApplicationContext委托执行post processors任务的工具类。这里的postProcessor包括两类 :BeanFactoryPostProcessorBeanPostProcessorBeanFactoryPostProcessor又细分为两类:BeanDefinitionRegistryPostProc原创 2021-09-17 13:43:53 · 558 阅读 · 0 评论 -
SpringBoot环境Environment
Environment关系图AbstractEnvironmentpublic abstract class AbstractEnvironment implements ConfigurableEnvironment { public static final String IGNORE_GETENV_PROPERTY_NAME = "spring.getenv.ignore"; //profiles激活文件 public static final String ACTIVE原创 2021-09-16 12:31:39 · 1003 阅读 · 0 评论 -
SpringBoot属性解析器PropertyResolver
PropertyResolverPropertyResolver属性解决器,主要具有两个功能:通过propertyName属性名获取与之对应的propertValue属性值(getProperty)把${propertyName:defaultValue}格式的属性占位符,替换为实际的值(resolvePlaceholders)注意:getProperty获取的属性值,全都是调用resolvePlaceholders进行占位符替换后的值。public interface PropertyRes原创 2021-09-16 12:30:05 · 707 阅读 · 0 评论 -
SpringBoot属性源PropertySource
PropertySourcePropertySource主要是对属性源的抽象,包含属性源名称和属性源内容对象。其方法主要是对这两个字段进行操作。public abstract class PropertySource<T> { //属性源名称 protected final String name; //属性源 protected final T source; // 构造器 public PropertySource(String原创 2021-09-15 18:23:54 · 1429 阅读 · 0 评论 -
SpringBoot应用上下文ApplicationContext
AbstractApplicationContextpublic abstract class AbstractApplicationContext extends DefaultResourceLoader implements ConfigurableApplicationContext { //在此工厂中,国际化消息 MessageSource 的 bean的名称 //如果没有提供消息,消息解析将委托给父节点。 public static final String MESSA原创 2021-09-10 13:01:58 · 2013 阅读 · 0 评论 -
SpringBoot启动流程之SpringApplication.run()运行阶段之refreshContext
SpringApplication构造SpringApplication之后,就会调用ApingApplication的非静态run方法,进入运行阶段 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext c原创 2021-09-10 12:56:50 · 294 阅读 · 0 评论 -
SpringBoot启动流程之SpringApplication.run()运行阶段之prepareContext
SpringApplication构造SpringApplication之后,就会调用ApingApplication的非静态run方法,进入运行阶段 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext c原创 2021-09-10 12:55:13 · 359 阅读 · 0 评论 -
SpringBoot启动流程之SpringApplication.run()运行阶段之prepareEnvironment
SpringApplication构造SpringApplication之后,就会调用ApingApplication的非静态run方法,进入运行阶段 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext c原创 2021-09-10 12:50:09 · 370 阅读 · 0 评论 -
SpringBoot启动流程之SpringApplication.run()运行阶段之SpringApplicationRunListener
SpringApplication构造SpringApplication之后,就会调用ApingApplication的非静态run方法 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext context = nu原创 2021-09-05 17:25:24 · 716 阅读 · 0 评论 -
SpringBoot启动流程之SpringApplication构造阶段
SpringApplication public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) { this.sources = new LinkedHashSet(); this.bannerMode = Mode.CONSOLE; this.logStartupInfo = true; this.addComman原创 2021-09-03 19:05:14 · 169 阅读 · 0 评论 -
java -jar 参数前后位置说明
springboot项目启动的时候可以直接使用java -jar xxx.jar这样。下面说说参数1.-DpropName=propValue的形式携带,要放在-jar参数前面 eg:java -DprocessType=1 -jar xxx.jar 取值:System.getProperty("processType")2.参数直接跟在命令后面 eg:java -jar xxx.jar processType=1 processType2=2 取值:参转载 2021-04-28 19:53:35 · 648 阅读 · 0 评论 -
spring-boot-maven-plugin
https://docs.spring.io/spring-boot/docs/current/maven-plugin/index.htmlThe Spring Boot Maven Plugin provides Spring Boot support in Maven, allowing you to package executable jar or war archives and ...原创 2020-03-19 14:31:23 · 393 阅读 · 0 评论