Spring bean的創建,其本質上還是一個對象的創建,包含兩部分:當前對象實例化和對象屬性的實例化;

實現原理:
~~~
public class Appliction {
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
BeanFactory beanFactory = new BeanFactory();
Object bean = beanFactory.getBean(ObjectA.class);
System.err.println(bean);
}
}
public class BeanFactory {
private Map<String, Object> cacheMap = new HashMap<>();
public Object getBean(Class cla) throws IllegalAccessException, InstantiationException {
String simpleName = cla.getSimpleName();
System.err.println(simpleName);
if (cacheMap.containsKey(simpleName)) {
return cacheMap.get(simpleName);
}
Object instance = cla.newInstance();
cacheMap.put(simpleName, instance);
Field[] fields = cla.getDeclaredFields();
for (Field field : fields) {
boolean present = field.isAnnotationPresent(AutoIoc.class);
if (present) {
Class<?> declaringClass = field.getType();
Object obj = getBean(declaringClass);
field.setAccessible(true);
field.set(instance, obj);
}
}
return instance;
}
}
public class ObjectA {
@AutoIoc
private ObjectB objectB;
}
public class ObjectB {
@AutoIoc
private ObjectA objectA;
}
@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.FIELD})
public @interface AutoIoc {
}
~~~
- 概述
- Spring的使命
- 環境變量
- spring架構
- Spring各版本特性
- Spring3.1新特性
- spring頂級項目
- spring基礎
- spring環境變量
- 依賴注入
- spring獲取bean方法
- BeanFactory vs FactoryBean
- JavaBean裝配
- XML顯式配置
- 基于JAVA配置
- 自動化裝配bean
- SpringBean的作用域
- Spring應用上下文實現
- springbean的生命周期
- 自定義Bean的創建與銷毀
- Spring容器啟動過程
- spring加載xsd文件的流程
- spring擴展接口
- Spring主要類功能說明
- spring事務管理
- 事務特性
- 數據庫事務隔離級別
- 事務隔離性問題
- spring事務隔離級別
- 事務傳播行為
- @Transactional
- 循環依賴
- 構造器注入
- 循環依賴原理
- spring循環依賴原理
- spring三級緩存
- Spring注解
- @Component
- @ComponentScan
- @Autowired
- @Import
- @ImportResource
- @Profile
- @Conditional
- @Qualifier
- @Scope
- @PropertySource
- @Value
- @EnableScheduling
- SpEL-Spring表達式
- Spring-AOP
- SpringAOP五種通知類型
- AOP術語
- SpringMVC
- MVC原理圖
- SpringMVC工作原理
- springboot
- @SpringCloudApplication
- springboot tomcat配置
- Spring Boot Starter POMs
- Spring Boot technical starters
- spring boot事件類型
- Springboot日志
- SpringCloud
- springcloud微服務解決方案
- 服務組件
- 注冊中心
- Eureka
- Spring Cloud Zookeeper
- nacos
- Hystrix熔斷原理
- Hystrix應用
- Spring Cloud Config
- 服務網關
- Zuul
- Spring Cloud Gateway
- 服務調用及負載
- Ribbon
- Feign&OpenFeign
- Turbine
- actuator
- springboot & springcloud
- springcloud vs dubbo
- 常見面試題
- BeanFactory和FactoryBean
- @Autowired/@Resource和@Inject的區別
- Singleton bean注入prototype bean
- 附錄