IOC與DI總結

洛小白發表於2019-04-01
  1. 編寫流程(基於XML)

    1. 匯入jar包: 4+1 -> beans / core / context / expression | commons-logging
    2. 編寫目標類:dao和service
    3. spring配置檔案
      1. IoC:<bean id="" class="">
      2. DI:<bean><property name="" value="" ref=""></bean>
      3. 例項化方式:
        1. 預設構造
        2. 靜態工廠:<bean id="" class="工廠類" factory-method="靜態方法"/>
        3. 例項工廠:<bean id="" factory-bean="工廠id" factory-method="方法">
      4. 作用域:<bean id="" scope="singleton|porotype">
      5. 生命週期:<bean id="" class="" init-method="" destory-method="">
        1. 後處理bean BeanPostProssor介面,<bean class="註冊">對容器中所有的bean都生效
      6. 屬性注入
        1. 構造方法注入:<bean><constructor-arg index="" type="">
        2. setter方法注入:<bean><property>
        3. p 名稱空間:簡化<property> <bean p:屬性名="普通值" p:屬性名-ref="引用值"> 注意生明名稱空間
        4. SpEL:<property name="" value="#{表示式}">
          1. #{123} #{‘abc’}
          2. #{beanId.propName?methodName()}
          3. #{T(類).靜態方法|欄位}
        5. 集合
          1. 陣列<array>
          2. List<list>
          3. Set<set>
          4. Map<map><entry key="" value="">
          5. Propertes<props><prop key="">....
    4. 核心api
      1. BeanFactory:延遲例項化bean,第一次呼叫getBean
      2. ApplicationContext 一般常用,功能更強
        1. ClassPathXmlApplicationContext 載入 classpath xml檔案
        2. FileSystemXmlApplicationContext 載入 指定碟符檔案,ServletContext.getRealPath();
  2. 註解

    1. 掃描含有註解的類 1.<context:component-scan base-package="">
    2. 常見的註解
      1. Component 元件,任意bean
      2. WEB
        1. @Controller web層
        2. @Service service層
        3. @Repository dao層
      3. 注入 --》 欄位或者setter方法
        1. 普通值:@Value
        2. 引用值:
          1. 型別:@Autowired
          2. 名稱1:@Autowired @Qualifier("名稱")
          3. 名稱2:@Resource(“名稱”)
      4. 作用域:@Scope("prototype")
      5. 生命週期:
        1. 初始化:@PostConstruct
        2. 銷燬方法:@PreDestroy
  3. 註解和xml混合使用

    1. 將所有的bean都配到xml中

      1. <bean id="" class="">
    2. 將所有的依賴都使用註解

      1. @Autowired

        預設不生效。為了生效,需要在xml配置<context:annotation-config >

         <context:component-scan base-package="com.adolph.web"></context:component-scan>
         
         <context:annotation-config></context:annotation-config>
複製程式碼
     1. 一般情況兩個註解不一起使用
     2. 註解一,掃描含有註解(@Component等)類,注入註解自動生效
     3. 註解為,只在xml和註解(注入)混合使用時,使注入註解生效。複製程式碼

相關文章