簡介:Spring是一款輕量級,非入侵式架構,它的前身是interface21,Spring支援事務的處理,支援幾乎市面上所有的架構整合,最核心的兩個點是控制反轉(IOC)和面向切面程式設計(AOP)!
簡單來說,控制反轉是一種設計思想,沒有使用它之前,對象的建立與對象之間的依賴完全編碼在程式之中,對象的建立是由程式來控制的,而使用控制反轉之後,則将這個過程交給了第三方(使用者等...),很大程度上解耦,在Spring中實作控制反轉的是IOC容器,其實作方法是依賴注入(DI)。
<context:annotation-config />
<context:component-scan base-package="xxx" />
@Autowired 标注在類中的成員變量或方法上,完成的是bean的注入,方式預設ByType,如果類型找不到再通過ByName
如果不能唯一自動裝配上屬性,需要配合@Qualifier(value = "xxx")
@Nullable 打上這個注解,則該字段可以為null
@Resource 自動裝配通過名字,類型,可以說是@Autowired和@Qualifier的集合體
@Component 元件,将被标注的類注冊到Spring容器中,将類的執行個體化交給Spring管理,完成的是bean的注冊,執行個體化對象名預設為類名的小寫
衍生出來的有 @Repository @Service @Controller,作用等同于@Component,隻是為了符合SpringMVC的架構,分别用于Dao,Service,Controller層
@Configuration 代表這是一個配置類,就和之前看到的beans.xml一樣,表示會生成bean并注冊到Spring容器中,交給Spring托管
兩種使用方法:1.在配置類中定義一個方法,并使用@Bean注解聲明
2.在實體類上使用@Component注解,并在配置類上使用@ComponentScan("實體類的包或路徑名"),這樣會自動掃描@Component并生成Bean
最後在使用時,使用AnnotationConfigApplicationContext來擷取上下文對象
注意:第一種方法bean的名字是方法名,第二種方法bean名字為小寫的實體類名
@Bean 注冊一個bean,相當于寫的bean标簽,id=方法名,class=傳回值
@Value("xxx") 注入屬性,等價于 <-property name="xxx" value="xxx"-/>
動态代理模闆
調用指定的方法:首先ClassForName執行個體化對象,然後找到指定的方法,以及傳入參數的屬性,最後使用invoke調用方法
若要更改私有屬性的值,可以設定setAccessible(true)
調用Class對象的newInstance()方法時,類必須要有一個無參構造器
概述:通過預編譯的方式和動态代理實作程式運作期間的統一維護,是OOP(面向對象)的一種延續,即在不影響原程式的情況下,對業務進行增強
環境:需要在spring中導入對應的jar包,使用時導入aop的相關配置
實作方式1:Spring的API接口
實作方式2:自定義實作
實作方式3:注解實作
所需的jar包
mybatis核心配置檔案
實體類和接口
1.編寫資料庫對應的實體類;
2.編寫實作所需功能的接口以及它對應的mapper.xml配置檔案
3.自己寫好的mapper.xml配置檔案在核心配置檔案中注冊
過濾設定
若注冊綁定xml之後IDEA依舊提示有綁定異常,可以在pom.xml中加入過濾設定
1.編寫資料源配置
可以在資源檔案中建立一個總的applicationContext.xml檔案,spring-dao.xml中專注資料庫的處理以及sqlSession的建立,總的xml檔案中專注bean的處理,最後import導入即可
2.sqlSessionFactory
3.sqlSessionTemplate
4.需要給接口加一個實作類
一定要使用set方法來手動注入
5.将自己寫的實作類注入到spring的配置檔案中
6.測試使用
聲明式事務(在Spring中配合AOP使用)