日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【Spring】Spring第一天 - 环境搭建、IoC 详解、DI 详解等

發布時間:2024/2/28 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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 默認配置文件被加載時創建對象.

<?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"><!-- id 表示獲取到對象標識 class 創建哪個類的對象 --><bean id="peo" class="com.bjsxt.pojo.People" /> </beans>

3. 編寫測試方法
3.1 getBean(“<bean>標簽id值”,返回值類型);如果沒有第二個參數,默認是Object
3.2 getBeanDefinitionNames(),獲取 Spring 容器中目前所有管理的所有對象.

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); People people = ac.getBean("peo", People.class); System.out.println(people);String[] names = ac.getBeanDefinitionNames(); // 獲取 Spring 容器中目前所有管理的所有對象 for (String string : names) {System.out.println(string); }

四.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)

<bean id="peo" class="com.bjsxt.pojo.People"><!-- ref 引用另一個bean value 基本數據類型或 String 等 --><constructor-arg index="0" name="id" type="int" value="123"></constructor-arg><constructor-arg index="1" name="name" type="java.lang.String" value="張三"></constructor-arg> </bean>

2. 實例工廠
2.1 工廠設計模式:幫助創建類對象.一個工廠可以生產多個對象.
2.2 實例工廠:需要先創建工廠,才能生產對象
2.3 實現步驟:
2.3.1 必須要有一個實例工廠

public class PeopleFactory {public People newInstance() {return new People(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)

public class PeopleFactory {public static People newInstance() {return new People(1, "測試");} }

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="222"></property><property name="name" value="張三"></property> </bean>

等效于

<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 屬性賦值

<property name="strs" ><array><value>1</value><value>2</value><value>3</value></array> </property>

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

<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"><!-- 上下文參數 --><context-param><param-name>contextConfigLocation</param-name><!-- spring 配置文件 --><param-value>classpath:applicationContext.xml</param-value></context-param><!-- 封裝了一個監聽器,幫助加載Spring 的配置文件愛 --><listener><listener-class>org.springframework.web.context.Con textLoaderListener</listener-class></listener> </web-app>

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 對象

@WebServlet("/airport") public class AirportServlet extends HttpServlet {private AirportService airportService;@Overridepublic void init() throws ServletException {// 對service 實例化 // ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");// spring 和web 整合后所有信息都存放在webApplicationContextApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());airportService = ac.getBean("airportService", AirportServiceImpl.class);}@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setAttribute("list", airportService.show());req.getRequestDispatcher("index.jsp").forward(req, resp);} }

總結

以上是生活随笔為你收集整理的【Spring】Spring第一天 - 环境搭建、IoC 详解、DI 详解等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。