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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

轻松理解spring IOC

發布時間:2023/12/31 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 轻松理解spring IOC 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  spring IOC(Inversion of control)即控制反轉

  概念:一,spring框架的核心之一

     二,控制權由對象本身轉向容器;由容器根據配置文件去創建實例并創建各個實例之間的依賴關系?

  接下來我們以一個數據庫連接的案列來闡述IOC的工作原理,下圖為該項目的結構體系

  本例中我們著重關注util(獲取數據庫連接對象)以及dao(數據庫訪問層)的依賴關系解析

  本例需求:dao層可以自由,簡潔操作mysql和sqlserver數據庫

  第一步:我們先定義了獲取連接對象的接口

1 package util; 2 3 import java.sql.Connection; 4 5 public interface MyConnection { 6 public Connection getConnection(); 7 }

  第二步:mysql和sqlserver對上一接口的具體實現(以sqlserver為例)

1 package util; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 6 public class MyConnection_sqlserver implements MyConnection { 7 9 // 第一步:獲取數據連接,讓appliction server能夠與db server進行交互 10 private String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 11 private String url = "jdbc:sqlserver://localhost:1433;DatabaseName=CardDB"; 12 private String name = "sa"; 13 private String pwd = "123456"; 14 private Connection conn = null; 15 16 @Override 17 public Connection getConnection() { 18 try { 19 Class.forName(driver); 20 } catch (ClassNotFoundException e) { 21 System.out.println( e.getMessage() ); 22 } 23 try{ 24 conn = DriverManager.getConnection(url, name, pwd); 25 } 26 catch(Exception e){ 27 System.out.println("獲取數據庫連接時有異常:"+e.getMessage()); 28 } 29 return conn; 30 } 31 32 }

  第三步:dao獲取連接對象

1 package dao; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.util.ArrayList; 7 import java.util.List; 8 9 import entity.BookCard; 10 import util.MyConnection; 11 12 public class BookCardDaoImpl implements BookCardDao { 13 14 private MyConnection c; 15 16 public void setC(MyConnection c) { 17 this.c = c; 18 }

  解析:一,在dao中我們只定義了一個連接對象的屬性,我們并不用知道具體是哪一個數據庫的連接,只需要利用這個對象進行數據庫操作即可

     二,需要在本類中提供一個公共的set方法以便spring將這個連接對象注入進來

  我們可以對照面向對象編程的寫法來進一步了解IOC的長處

1 public class BookCardDaoImpl implements BookCardDao { 2 3 MyConnection c = new MyConnection_sqlserver();

  解析:在傳統面向對象的編程中我們層層級之間的關系緊密耦合在一起這就可能會引起這樣一個問題,如果某一層出現問題,則可能影響到其他層,所以迫使其它層也需要作出調整

  關鍵--》spring注入

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:p="http://www.springframework.org/schema/p" 5 xmlns:aop="http://www.springframework.org/schema/aop" 6 xmlns:context="http://www.springframework.org/schema/context" 7 xmlns:jee="http://www.springframework.org/schema/jee" 8 xmlns:tx="http://www.springframework.org/schema/tx" 9 xsi:schemaLocation=" 10 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd 11 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 12 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd 13 http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.2.xsd 14 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd"> 15 20 <bean id="myDao1" class="dao.BookCardDaoImpl" scope="prototype"> 21 <property name="c" ref="myConnection1"></property> 22 </bean> 23 28 <bean id="myConnection1" class="util.MyConnection_mysql" scope="prototype"></bean> 29 30 <bean id="myConnection2" class="util.MyConnection_sqlserver" scope="prototype"></bean> 31 32 </beans> 33

  解析:一,以上為部分spring的配置文件

     二,回到本例的需求上來分析,如果我們需要操作mysql數據庫只需要在dao這個bean中引用bean_id為myConnection1的bean,同理SqlServer則引用myConnection2

  本篇博客到此結束,如果想繼續深入理解IOC的朋友歡迎大家閱讀下篇自己動手寫spring IOC框架

轉載于:https://www.cnblogs.com/1016882435AIDA/p/5895480.html

總結

以上是生活随笔為你收集整理的轻松理解spring IOC的全部內容,希望文章能夠幫你解決所遇到的問題。

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