IOC操作Bean管理XML方式(注入外部bean)
目錄
?
?
1..注入屬性-外部 bean
(1)創建兩個類 service 類和 dao 類【分別創建兩個包存放兩個類】
(2)在 service 調用 dao 里面的方法
(3)(后來做法)在Spring 配置文件中進行配置
?
?
1..注入屬性-外部 bean
首先,復習一下javaEE的三層結構 web層、service層、dao層
我們常常提到java EE的三層或者四層結構。
四層架構:
展示層(web層)、業務邏輯層、數據訪問層、信息資源層
四層架構在是開發企業應用時使用的非常經典的劃分模式。
web層負責前端展示和用戶請求的處理。mvc是一個設計模式,主要用戶構建用戶界面,目的是把展示邏輯和邏輯分離。web層通常會使用MVC模式進行構建,經常使用的mvc框架包括spring mvc,struts等,都是在web層或者展示層使用的。
業務邏輯層一般應用中會有一層service抽象,實現核心業務邏輯,事務控制也在這一層實現。
數據訪問層也即dao層,重點負責數據庫訪問,完成持久化功能。
信息資源層主要服務資源的存儲。
所以mvc和四層(三層)結構有關系,四層架構是應用的體系(分層)結構,描述了整個應用的一個完整的劃分,而mvc是一個設計模式,通常會用于四層架構的展示層的構建上。
?
?那么,通過service層去調用dao層這個過程就是引入外部bean
實現步驟:
(1)創建兩個類 service 類和 dao 類【分別創建兩個包存放兩個類】
在service包中添加UserService類
package com.lbj.spring5.service;public class UserService {public void add(){System.out.println("service add............");} }?在dao包中添加UserDao的接口類
再在dao包中添加UserDaoImpl實現類,讓它實現UserDao的接口
結構圖:
接口類UserDao的代碼如下:
package com.lbj.spring5.dao;/*** Created by 14811 on 2020/12/1.*/ public class UserDaoImpl implements UserDao {@Overridepublic void update() {System.out.println("dao update..........");} }?實現類UserDaoImpl的代碼如下:
package com.lbj.spring5.dao;public class UserDaoImpl implements UserDao {@Overridepublic void update() {System.out.println("service add..........");} }?
(2)在 service 調用 dao 里面的方法
原始做法:
在UserService類中調用UserDaoImpl實現類中的方法【底層:Service要的到dao的對象】
【接口=new它的實現類的對象,這個的過程就叫做多態(抽象類或接口當做父類,父類引用指向子類對象)】
代碼如下:
package com.lbj.spring5.service;import com.lbj.spring5.dao.UserDao; import com.lbj.spring5.dao.UserDaoImpl;public class UserService {public void add(){System.out.println("service add............");//創建UserDao對象UserDao dao=new UserDaoImpl();//調用實現類中的方法dao.update();} }?
(3)(后來做法)在Spring 配置文件中進行配置
第一步:在UserService類中創建UserDao類型屬性,生成set方法
注意:Spring的屬性也可以是類的屬性,不僅僅是String類型的屬性
UserService類代碼如下:
package com.lbj.spring5.service;import com.lbj.spring5.dao.UserDao; import com.lbj.spring5.dao.UserDaoImpl;public class UserService {//創建UserDao類型屬性,生成set方法private UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}public void add(){System.out.println("service add............");//調用方法userDao.update();} }?第二步:為了方便區分我們之前做的實驗,我們新建一個bean2.xml
?使用ref讓一個Bean作為另外一個Bean的成員變量
<?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/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--1.service和dao對象的創建--><bean id="userService" class="com.lbj.spring5.service.UserService"><!--注入userDao對象name屬性值:類里面屬性的名稱ref屬性:創建userDao對象bean標簽的id值--><property name="userDao" ref="userDaoImpl"></property></bean><bean id="userDaoImpl" class="com.lbj.spring5.dao.UserDaoImpl"></bean> </beans>最后,為了方便測試,我們新建一個測試類 TestBean 類
?
代碼如下:
package com.lbj.spring5.testdemo;import com.lbj.spring5.service.UserService; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBean {@Testpublic void testUserService(){//1.加載spring配置文件ApplicationContext context=new ClassPathXmlApplicationContext("bean2.xml");//2.獲取配置創建的對象,通過context得到對象UserService userService=context.getBean("userService", UserService.class);//4.通過userService調用add()方法userService.add();} }?結果如下:
?
?
?
?
總結
以上是生活随笔為你收集整理的IOC操作Bean管理XML方式(注入外部bean)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA入门级教学之(super的内存示
- 下一篇: Android插u盘自动执行,andro