commandlinerunner
以main方法為入口:
initialize(sources);
private
void
initialize(object sources)
//判斷當前是否乙個web應用
this.webenvironment = deducewebenvironment();
setinitializers((collection) getspringfactoriesinstances(
//從多個配置類中找到有main方法的主配置類
//整個springboot應用啟動完成以後返回啟動的ioc容器;
return context;
}catch (throwable ex)
}
public
class
implements
@override
public}}
public
class
implements
//必須有的構造器
public
}@override
public
void
starting()
@override
public
void
environmentprepared(configurableenvironment environment)
@override
public
void
}@override
public
void
}@override
public
void}}
配置(meta-inf/spring.factories)
org.springframework
.context
com.atguigu
.springboot
.listener
org.springframework
.boot
com.atguigu
.springboot
.listener
@component
public
class
implements
@override
public
void}}
commandlinerunner
@component
public
class
hellocommandlinerunner
implements
commandlinerunner
}
只需要放在ioc容器中
• spring boot啟動時掃瞄所有jar包的meta-inf/spring.factories中配置的
enableautoconfiguration元件
• spring-boot-autoconfigure.jar/meta-inf/spring.factories配置了啟動時需要載入的
enableautoconfiguration元件
• 配置檔案中使用debug=true可以**到當前啟用的自動配置的資訊
• 自動配置會為容器中新增大量元件
• spring boot在做任何功能都需要從容器中獲取這個功能的元件
• spring boot總是遵循乙個標準:容器中有我們自己配置的元件就用我們配置的,沒有就用自動配
置預設註冊進來的元件
Spring Boot啟動配置原理
run 列印banner資訊 建立ioc容器物件 run 重新整理啟動ioc容器 掃瞄載入所有容器中的元件 包括從meta inf spring.factories中獲取的所有enableautoconfiguration元件 配置在meta inf spring.factories command...
SpringBoot啟動配置原理
springboot應用啟動,呼叫此方法 return run new object args 初始化 initialize sources private void initialize object sources 當前應用是否是web應用 this.webenvironment deducew...
SpringBoot 啟動配置原理(十八)
前兩個是 配置在meta inf spring.factories,後兩個是只需要放在ioc容器中。initialize sources private void initialize object sources 判斷當前是否乙個web應用 this.webenvironment deducewe...