javascript
【Spring】Spring第一天 - 环境搭建、IoC 详解、DI 详解等
一.Spring 框架簡介及官方壓縮包目錄
介紹
1.主要發明者:Rod Johnson
2.輪子理論推崇者:
2.1 輪子理論:不用重復發明輪子.
2.2 IT 行業:直接使用寫好的代碼.
3.Spring 框架宗旨:不重新發明技術,讓原有技術使用起來更加方便.
4.Spring 幾大核心功能
4.1 IoC/DI 控制反轉/依賴注入
4.2 AOP 面向切面編程
4.3 聲明式事務.
5.Spring 框架runtime
5.1 test: spring 提供測試功能
5.2 Core Container:核心容器.Spring 啟動最基本的條件.
5.2.1 Beans : Spring 負責創建類對象并管理對象
5.2.2 Core: 核心類
5.2.3 Context: 上下文參數.獲取外部資源或這管理注解等
5.2.4 SpEl: expression.jar
5.3 AOP: 實現aop 功能需要依賴
5.4 Aspects: 切面AOP 依賴的包
5.5 Data Access/Integration : spring 封裝數據訪問層相關內容
5.5.1 JDBC : Spring 對JDBC 封裝后的代碼.
5.5.2 ORM: 封裝了持久層框架的代碼.例如Hibernate
5.5.3 transactions:對應 spring-tx.jar,聲明式事務使用.
5.6 WEB:需要 spring 完成 web 相關功能時需要.
5.6.1 例如:由 tomcat 加載 spring 配置文件時, 需要有 spring-web 包
6.Spring 框架中重要概念
6.1 容器(Container): Spring 當作一個大容器.
6.2 BeanFactory 接口.老版本.
6.2.1 新版本中 ApplicationContext 接口,是 BeanFactory 子接口.BeanFactory 的功能在ApplicationContext 中都有.
7.從Spring3 開始把Spring 框架的功能拆分成多個jar.
7.1 Spring2 及以前就一個jar
二.IoC
1 中文名稱:控制反轉
2.英文名稱:(Inversion of Control)
3.IoC 是什么?
3.1 IoC 完成的事情原先由程序員主動通過 new 實例化對象事情,轉交給 Spring 負責.
3.2 控制反轉中控制指的是:控制類的對象.
3.3 控制反轉中反轉指的是轉交給 Spring 負責.
3.4 IoC 最大的作用:解耦.
3.4.1 程序員不需要管理對象.解除了對象管理和程序員之間的耦合.
三.Spring 環境搭建
1. 導入jar
1.1 四個核心包一個日志包(commons-logging)
2. 在src 下新建 applicationContext.xml
2.1 文件名稱和路徑自定義.
2.2 記住 Spring 容器 ApplicationContext,applicationContext.xml 配置的信息最終存儲到了AppliationContext 容器中
2.3 spring 配置文件是基于 schema
2.3.1 schema 文件擴展名.xsd
2.3.2 把 schema 理解成 DTD 的升級版.
2.3.2.1 比 DTD 具備更好的擴展性.
2.3.3 每次引入一個 xsd 文件是一個namespace(xmlns)
2.4 配置文件中只需要引入基本 schema
2.4.1 通過<bean/> 創建對象.
2.4.2 默認配置文件被加載時創建對象.
3. 編寫測試方法
3.1 getBean(“<bean>標簽id值”,返回值類型);如果沒有第二個參數,默認是Object
3.2 getBeanDefinitionNames(),獲取 Spring 容器中目前所有管理的所有對象.
四.Spring 創建對象的三種方式
1. 通過構造方法創建
1.1 無參構造創建:默認情況.
1.2 有參構造創建:需要明確配置
1.2.1 需要在類中提供有參構造方法
1.2.2 在 applicationContext.xml 中設置調用哪個構造方法創建對象
1.2.2.1 如果設定的條件匹配多個構造方法執行最后的構造方法
1.2.2.2 index : 參數的索引,從0 開始
1.2.2.3 name: 參數名
1.2.2.4 type:類型(區分開關鍵字和封裝類 int 和 Integer)
2. 實例工廠
2.1 工廠設計模式:幫助創建類對象.一個工廠可以生產多個對象.
2.2 實例工廠:需要先創建工廠,才能生產對象
2.3 實現步驟:
2.3.1 必須要有一個實例工廠
2.3.2 在applicationContext.xml 中配置工廠對象和需要創建的對象
<bean id="factory" class="com.bjsxt.pojo.PeopleFactory"></bean> <bean id="peo1" factory-bean="factory" factory-method="newInstance"></bean>3. 靜態工廠
3.1 不需要創建工廠,快速創建對象.
3.2 實現步驟
3.2.1 編寫一個靜態工廠(在方法上添加static)
3.2.2 在 applicationContext.xml 中
<bean id="peo2" class="com.bjsxt.pojo.PeopleFactory" factory-method="newInstance"></bean>五.如何給 Bean 的屬性賦值 (注入)
1.通過構造方法設置值.
2.設置注入(通過set 方法)
2.1 如果屬性是基本數據類型或 String 等簡單類型
等效于
<bean id="peo" class="com.bjsxt.pojo.People"><property name="id"><value>456</value></property><property name="name"><value>zhangsan</value></property> </bean>2.2 如果屬性是Set<?>集合
<property name="sets"><set><value>1</value><value>2</value><value>3</value><value>4</value></set> </property>2.3 如果屬性是List<?>
<property name="list"><list><value>1</value><value>2</value><value>3</value></list> </property>2.3.1 如果 list 中就只有一個值
<property name="list" value="1"> </property>2.4 如果屬性是數組
2.4.1 如果數組中就只有一個值,可以直接通過 value 屬性賦值
2.5 如果屬性是map
<property name="map"><map><entry key="a" value="b" ></entry><entry key="c" value="d" ></entry></map> </property>2.6 如果屬性 Properties 類型
<property name="demo"><props><prop key="key">value</prop><prop key="key1">value1</prop></props> </property>六. DI 依賴注入
1. DI:中文名稱:依賴注入
2. 英文名稱((Dependency Injection)
3. DI 是什么?
3.1 DI 和IoC 是一樣的
3.2 當一個類(A)中需要依賴另一個類()對象時,把B 賦值給A 的過程就叫做依賴注入.
4. 代碼體現:
<bean id="peo" class="com.bjsxt.pojo.People"><property name="desk" ref="desk"></property> </bean><bean id="desk" class="com.bjsxt.pojo.Desk"><property name="id" value="1"></property><property name="price" value="12"></property> </bean>七.使用 Spring 簡化 MyBatis
1. 導入 mybatis 所有 jar 和 spring 基本包,spring-jdbc,spring-tx,spring-aop,spring-web,spring 整合mybatis 的包等
2. 先配置web.xml
3. 編寫 spring 配置文件 applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 數據源封裝類.配置數據庫的用戶名和密碼.數據源:獲取數據庫連接,依賴于spring-jdbc.jar --><bean id="dataSouce"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/ssm"></property><property name="username" value="root"></property><property name="password" value="smallming"></property></bean><!-- 創建SqlSessionFactory對象 --><bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 數據庫連接信息來源于dataSource --><property name="dataSource" ref="dataSouce"></property></bean><!-- 掃描器,相當于mybatis.xml中mappers下package標簽,掃描com.bjsxt.mapper包后會給對應接口創建對象 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 要掃描哪個包 --><property name="basePackage" value="com.bjsxt.mapper"></property><!-- 和factory 產生關系 --><property name="sqlSessionFactory" ref="factory"></property></bean><!-- 由 spring 管理 service 實現類 --><bean id="airportService" class="com.bjsxt.service.impl.AirportServiceImpl"><property name="airportMapper" ref="airportMapper"></property></bean> </beans>4. 編寫代碼
4.1 正常編寫 pojo
4.2 編寫 mapper 包下時必須使用接口綁定方案或注解方案(必須有接口)
4.3 正常編寫 Service 接口和Service 實現類
3.3.1 需要在 Service 實現類中聲明 Mapper 接口對象,并生成get/set方法
4.4 spring 無法管理 Servlet ,在 service 中取出 Service 對象
總結
以上是生活随笔為你收集整理的【Spring】Spring第一天 - 环境搭建、IoC 详解、DI 详解等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【JavaScript】请求数据时,添加
- 下一篇: 【Spring】Spring第二天 -