IOC的核心

IOC思想:實(shí)現(xiàn)對象的控制反轉(zhuǎn)(由框架控制對象)將對象的控制權(quán)移交給框架。
對于初學(xué)者來講,對資源的控制很難達(dá)到非常高的標(biāo)準(zhǔn),由高級的設(shè)計人員完成這件事情就可以了。
IOC核心(思想的實(shí)現(xiàn))-最核心的部件:
工廠:構(gòu)建對象
容器:存儲對象
注入:實(shí)現(xiàn)對象依賴關(guān)系的設(shè)置
IOC技術(shù)的實(shí)現(xiàn)(套路或模式):
1.反射(動態(tài)操作數(shù)據(jù))+XML(描述數(shù)據(jù))
2.反射(動態(tài)操作數(shù)據(jù))+注解(描述數(shù)據(jù))

Spring中的工廠
我們用ClassPathXmlApplicationContext或者用annotation注解的方式AnnotationConfigApplicationContext初始化xml,這些類都實(shí)現(xiàn)了ApplicationContext接口,ApplicationContext又繼承了ListableBeanFactory,ListableBeanFactory又繼承了BeanFactory接口,BeanFactory的理念是創(chuàng)建Bean對象的工廠,Context的上文是工廠,下文是容器,工廠創(chuàng)建對象,創(chuàng)建的對象放在容器,容器是map

public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,
        MessageSource, ApplicationEventPublisher, ResourcePatternResolver {}
public interface ListableBeanFactory extends BeanFactory {}
package org.springframework.beans.factory;

import org.springframework.beans.BeansException;
import org.springframework.core.ResolvableType;
public interface BeanFactory {
    String FACTORY_BEAN_PREFIX = "&";
    Object getBean(String name) throws BeansException;
    <T> T getBean(String name, Class<T> requiredType) throws BeansException;
    <T> T getBean(Class<T> requiredType) throws BeansException;
    Object getBean(String name, Object... args) throws BeansException;
    <T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
    boolean containsBean(String name);

    boolean isSingleton(String name) throws NoSuchBeanDefinitionException;

    boolean isPrototype(String name) throws NoSuchBeanDefinitionException;

    boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;

    boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;

    Class<?> getType(String name) throws NoSuchBeanDefinitionException;

    String[] getAliases(String name);
}

現(xiàn)階段的程序員是消費(fèi)者
生產(chǎn)者是IOC,創(chuàng)建對象,通過容器注入給消費(fèi)者
誰用注入給誰

IOC基礎(chǔ):一個對象如何由Spring容器去創(chuàng)建,一個對象如何由spring容器去控制它的作用域,去控制它的生命周期,去實(shí)現(xiàn)對象的延時加載
IOC進(jìn)階:如何使用Spring的IOC為對象的屬性注入值:基本類型(直接量)值的注入,集合類型值的注入,對象類型值的注入
IOC高級:注解方式實(shí)現(xiàn)IOC的思想
springIOC整合druid:因?yàn)閐ruid在高并發(fā)情況下應(yīng)用的非常完美
springIOC整合MyBatis,基于xml方式的整合和基于注解方式的整合

<bean class=" ">

@Controller
Class SysLogController{}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容