spring 第一章 Spring模塊規劃圖 核心架包 AOP+Aspects(面向切麵編程模塊) 數據訪問/:Spring資料庫訪問模塊 Web:Spring開發web應用的模塊; ecplise插件的安裝 1.ecplise查看版本號: Help About Eclipse 點擊自己eclips ...
spring
第一章
Spring模塊規劃圖
核心架包
spring-beans-4.0.0.RELEASE、
spring-core-4.0.0.RELEASE、
spring-context-4.0.0.RELEASE、
spring-expression-4.0.0.RELEASE
AOP+Aspects(面向切麵編程模塊)
spring-aop-4.0.0.RELEASE、spring-aop-4.0.0.RELEASE
數據訪問/:Spring資料庫訪問模塊
spring-jdbc-4.0.0.RELEASE、spring-orm(Object Relation Mapping)-4.0.0.RELEASE、
spring-ox(xml)m-4.0.0.RELEASE、spring-jms-4.0.0.RELEASE、(Intergration)
spring-tx-4.0.0.RELEASE(事務)
Web:Spring開發web應用的模塊;
spring-websocket(新的技術)-4.0.0.RELEASE、
spring-web-4.0.0.RELEASE、和原生的web相關(servlet)
spring-webmvc-4.0.0.RELEASE、開發web項目的(web)
spring-webmvc-portlet-4.0.0.RELEASE(開發web應用的組件集成)
ecplise插件的安裝
1.ecplise查看版本號: Help->About Eclipse-->點擊自己eclipse的圖標
2.選中帶有SpringIDE的四項
3.去掉hide與contact選框
第二章
核心思想
IOC:控制反轉
控制:資源的獲取方式。
從主動自己創建。如:BookService bs = new BookService();
到被動:直接從容器獲取,容器進行對象的管理
容器:(婚介所)管理所有的組件(有功能的類);容器:主動的new資源變為被動的接受資源 ;
DI:依賴註入
容器通過反射的形式,將容器中對象註入(利用反射給屬性賦值);
框架編寫流程
1.導包:
核心容器
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
commons-logging-1.1.3.jar
Spring運行的時候依賴一個日誌包;沒有就報錯;
2.寫配置
spring的配置文件中,集合了spring的ioc容器管理的所有組件(會員清單);創建一個Spring Bean Configuration File(Spring的bean配置文件);
<!--
一個Bean標簽可以註冊一個組件(對象、類) (會員對象)
class:寫要註冊的組件的全類名(會員真實名字)
id:這個對象的唯一標示;(會員號)
-->
<bean id="person01" class="com.atguigu.bean.Person">
<!--使用property標簽為Person對象的屬性賦值
name="lastName":指定屬性名
value="張三":為這個屬性賦值
-->
<property name="lastName" value="張三"></property>
<property name="age" value="18"></property>
<property name="email" value="[email protected]"></property>
<property name="gender" value="男"></property>
</bean>
3.測試
package com.atguigu.test;
import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.atguigu.bean.Person;
public class IOCTest {
@Test
public void test() {
//ApplicationContext 代表ioc容器
//ClassPathXmlApplicationContext:當前應用的xml配置文件在 ClassPath下
//跟spring的配置文件得到ioc容器對象
ApplicationContext ioc = new ClassPathXmlApplicationContext("ioc.xml");
//容器幫我們創建了對象了
Person bean = (Person) ioc.getBean("person01");
System.out.println(bean);
}
}
列印結果:
Person [lastName=張三, age=18, gender=男, email=zhangsan@guigu]
說明:
1)、src,源碼包開始的路徑,稱為類路徑的開始;(source folder 等價與src)
*所有源碼包裡面的東西都會被合併放在類路徑裡面;
*java:/bin/
*web:/WEB-INF/classes/
2)、導包commons-logging-1.1.3.jar(依賴)
3)、先導包再創建配置文件;
4)、Spring的容器接管了標誌了s的類(裝了插件才有特效)
細節:
new ClassPathXMlApplicationContext("ioc.xml");ioc容器的配置文件在類路徑下;
FileSystemXmlApplicationContext("F://ioc.xml");ioc容器的配置文件在磁碟路徑下;
1)ApplicationContext(IOC容器的介面)
2)給容器中註冊一個組件;我們也從容器中按照id拿到了這個組件的對象?
組件的創建工作,是容器完成;
Person對象是什麼時候創建好了呢?
容器中對象的創建在容器創建完成的時候就已經創建好了;
3)同一個組件(對象)在ioc容器中是單實例的、
4)、容器中如果沒有這個組件,獲取組件?報異常
* org.springframework.beans.factory.NoSuchBeanDefinitionException:
* No bean named 'person03' is defined
* 5)、ioc容器在創建這個組件對象的時候,(property)會利用setter方法為javaBean的屬性進行賦值;
* 6)、javaBean的屬性名是由什麼決定的?getter/setter方法是屬性名;set去掉後面那一串首字母小寫就是屬性名;
* private String lastName;?
* 所有getter/setter都自動生成!