當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring-学习笔记02【程序间耦合】
生活随笔
收集整理的這篇文章主要介紹了
Spring-学习笔记02【程序间耦合】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- Java后端 學習路線 筆記匯總表【黑馬程序員】
目錄
01 編寫jdbc的工程代碼用于分析程序的耦合
1.1、創建數據表
1.2、編寫數據庫測試代碼
02 編譯期依賴
03 程序的耦合和解耦的思路分析1
04 曾經代碼中的問題分析
05 編寫工廠類和配置文件
06 工廠模式解耦
07 分析工廠模式中的問題并改造
08 工廠模式解耦的升級版
01 編寫jdbc的工程代碼用于分析程序的耦合
1.1、創建數據表
create database eesy;use eesy;CREATE TABLE account(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(40),money FLOAT )CHARACTER SET utf8 COLLATE utf8_general_ci;INSERT INTO account(NAME,money) VALUES('aaa',1000); INSERT INTO account(NAME,money) VALUES('bbb',1000); INSERT INTO account(NAME,money) VALUES('ccc',1000);1.2、編寫數據庫測試代碼
package com.iteima.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet;public class JdbcDemo1 {public static void main(String[] args) throws Exception {//1.注冊驅動//DriverManager.registerDriver(new com.mysql.jdbc.Driver());Class.forName("com.mysql.jdbc.Driver");//2.獲取連接Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/eesy", "root", "root");//3.獲取操作數據庫的預處理對象PreparedStatement pstm = conn.prepareStatement("select * from account");//4.執行SQL,得到結果集ResultSet rs = pstm.executeQuery();//5.遍歷結果集while (rs.next()) {System.out.println(rs.getString("name"));}//6.釋放資源rs.close();pstm.close();conn.close();} }02 編譯期依賴
?
03 程序的耦合和解耦的思路分析1
?
* 程序的耦合* 耦合:程序間的依賴關系* 包括:類之間的依賴、方法間的依賴* 解耦:* 降低程序間的依賴關系* 實際開發中:* 應該做到:編譯期不依賴,運行時才依賴。* 解耦的思路:* 第一步:使用反射來創建對象,而避免使用new關鍵字;* 第二步:通過讀取配置文件來獲取要創建的對象全限定類名。04 曾經代碼中的問題分析
05 編寫工廠類和配置文件
/*** 一個創建Bean對象的工廠** Bean:在計算機英語中,有可重用組件的含義。* JavaBean:用java語言編寫的可重用組件。* javabean > 實體類** 它就是創建我們的service和dao對象的。** 第一個:需要一個配置文件來配置我們的service和dao* 配置的內容:唯一標識=全限定類名(key=value)* 第二個:通過讀取配置文件中配置的內容,反射創建對象** 我的配置文件可以是xml也可以是properties*/06 工廠模式解耦
07 分析工廠模式中的問題并改造
08 工廠模式解耦的升級版
?
package com.itheima.factory;import java.io.InputStream; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.Properties;/*** 一個創建Bean對象的工廠** Bean:在計算機英語中,有可重用組件的含義。* JavaBean:用java語言編寫的可重用組件。* javabean > 實體類** 它就是創建我們的service和dao對象的。** 第一個:需要一個配置文件來配置我們的service和dao* 配置的內容:唯一標識=全限定類名(key=value)* 第二個:通過讀取配置文件中配置的內容,反射創建對象** 我的配置文件可以是xml也可以是properties*/ public class BeanFactory {//定義一個Properties對象private static Properties props;//定義一個Map,用于存放我們要創建的對象。我們把它稱之為容器private static Map<String, Object> beans;//使用靜態代碼塊為Properties對象賦值static {try {//實例化對象props = new Properties();//獲取properties文件的流對象,類加載器getClassLoader()InputStream in = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");props.load(in);//實例化容器beans = new HashMap<String, Object>();//取出配置文件中所有的KeyEnumeration keys = props.keys();//遍歷枚舉while (keys.hasMoreElements()) {//取出每個KeyString key = keys.nextElement().toString();//根據key獲取valueString beanPath = props.getProperty(key);//反射創建對象Object value = Class.forName(beanPath).newInstance();//把key和value存入容器中beans.put(key, value);}} catch (Exception e) {throw new ExceptionInInitializerError("初始化properties失敗!");}}/*** 根據bean的名稱獲取對象** @param beanName* @return*/public static Object getBean(String beanName) {return beans.get(beanName);}/*** 根據Bean的名稱獲取bean對象* @param beanName* @return*/public static Object getBean2(String beanName) {Object bean = null;try {String beanPath = props.getProperty(beanName);//System.out.println(beanPath);//反射方式創建對象bean = Class.forName(beanPath).newInstance();//每次都會調用默認構造函數創建對象} catch (Exception e) {e.printStackTrace();}return bean;} }總結
以上是生活随笔為你收集整理的Spring-学习笔记02【程序间耦合】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyBatis-学习笔记12【12.My
- 下一篇: Spring-学习笔记03【Spring