**Spring課堂記錄**
有關jar包:四個基礎包和一個依賴包 4+1
1、spring-core-4.3.6.RELEASE.jar
包含Spring框架的核心工具類,Spring其它元件都要用到這個包裡的類。
2、spring-beans-4.3.6.RELEASE.jar
所有應用都要用到的JAR包,它包含訪問配置檔案、建立和管理Bean以及進行控制反轉或者依賴注入操作相關的所有類。
3、spring-context-4.3.6.RELEASE.jar
提供了在基礎IoC功能上的擴充套件服務,還提供了許多企業級服務的支援
4、spring-expression-4.3.6.RELEASE.jar
定義了Spring的表示式語言。
5、依賴包-------在使用Spring開發時,除了要使用自帶的JAR包外,Spring的核心容器還需要依賴commons.logging的JAR包。
一、Spring的核心是IOC(控制反轉)和AOP(面向切面程式設計)
Spring模組:
核心容器提供 Spring 框架的基本功能(Spring Core),包括IOC和DI功能。
IOC:控制反轉—自己需要的物件由別人建立(別人是指Spring框架)
DI:依賴注入—自己需要使用的物件由別人提供(別人是指Spring框架)
核心容器又分為BeanFactory和ApplicationContext
核心容器的主要元件是 BeanFactory
BeanFactory 使用IOC模式將應用程式的配置和依賴性規範與實際的應用程式程式碼分開,將類和類之間的依賴從程式碼中脫離出來,用配置的方式進行依賴關係描述,由IoC容器負責依賴類之間的建立、拼接、管理、獲取等工作。 BeanFactory介面是Spring框架的核心介面,實現了容器的許多核心功能。
上下文
Context模組構建與核心模組之上,擴充套件BeanFactory的功能,提供了許多企業服務,例如JNDI、EJB、電子郵件、國際化、校驗和排程功能。ApplicationContext是Context模組的核心介面。
AOP(面向切面程式設計)
資料訪問物件(Spring Dao)
物件關係對映(Spring ORM)
Spring Web(web及遠端操作)
Spring Web MVC
Spring提供了MVC框架,稱為Spring MVC。
關於控制反轉和依賴注入
IOC是讓生成類的方式由傳統方式(new)反過來,既程式設計師不呼叫new,需要類的時候由框架注入(DI),是同一件不同層面的解讀。
IoC主要的實現方式有兩種:依賴查詢,依賴注入。依賴注入是一種更可取的方式。
依賴注入(Dependency Injection . DI ) :IOC是目的,DI則是手段。IoC容器實際上是一個DI框架。
AOP術語
切面(Aspect):橫切關注點(跨越應用程式多個模組的功能)被模組化的特殊物件
通知(Advice):切面必須要完成的工作
目標(Target):被通知的物件
代理(Proxy):向目標物件應用通知之後建立的物件
連線點(Joinpoint):程式執行的某個特定位置
連線點由兩個資訊確定:方法表示的程式執行點;相對點表示的方位
切點(pointcut):每個類都有多個連線點(連線點四程式類中客觀存在的事務)
AOP通過切點定位到特定的連線點
連線點相當於資料庫中的記錄,切點相當於查詢條件
18.10.09
Spring中的Bean
如果把Spring看作一個工廠,則容器中的Bean就是該工廠的產品
Appilication物件的時候就是工廠開始加工的時候
ApplicationContext context = new ClassPathXmlApplicationContext(“applicationContext.xml”);
Bean的例項化方式:構造器例項化、靜態工廠方式例項化和例項工廠方式例項化
Bean的裝配方式:基於XML的裝配、基於註解(Annotation)的裝配和自動裝配(其中最常用的是基於註解的裝配。
(寫的是原始檔,執行的是編譯後的檔案)
基於Annotation的裝配
主要註解:
@Component:用於描述Spring中的Bean,它是一個泛化的概念,僅僅表示一個元件。
@Repository:用於將資料訪問層(DAO)的類標識為Spring中的Bean 。
@Service:用於將業務層(Service)的類標識為Spring中的Bean。
@Controller:用於將控制層(Controller)的類標識為Spring中的Bean 。
@Autowired:用於對Bean的屬性變數、屬性的setter方法及構造方法進行標註,配合對應的註解處理器完成Bean的自動配置工作。
@Resource:其作用與Autowired一樣。@Resource中有兩個重要屬性:name和type。Spring將name屬性解析為Bean例項名稱,type屬性解析為Bean例項型別。
@Qualifier:與@Autowired註解配合使用,會將預設的按Bean型別裝配修改為按Bean的例項名稱裝配,Bean的例項名稱由@Qualifier註解的引數指定。(是相當於重新命名功能,一般直接使用Autowired)