• Java后端 学习路线 笔记汇总表【黑马程序员】
  1. Spring-学习笔记01【Spring框架简介】【day01】
  2. Spring-学习笔记02【程序间耦合】
  3. Spring-学习笔记03【Spring的IOC和DI】
  4. Spring-学习笔记04【Spring的常用注解】【day02】
  5. Spring-学习笔记05【基于XML的IOC的案例1】
  6. Spring-学习笔记06【Spring的新注解】
  7. Spring-学习笔记07【银行转账案例】【day03】
  8. Spring-学习笔记08【面向切面编程AOP】
  9. Spring-学习笔记09【JdbcTemplate的基本使用】【day04】
  10. Spring-学习笔记10【Spring事务控制】

目录

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【程序间耦合】相关推荐

  1. JavaEE——Spring学习笔记03【AOP开发】

    JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...

  2. JavaEE——Spring学习笔记01【Ioc开发的模式】

    JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...

  3. Spring学习(2)-程序间耦合和工厂模式解耦

    程序的耦合及解耦 本文目录 程序的耦合及解耦 1.什么是程序的耦合 2.解决程序耦合的思路 3.工厂模式解耦 4.控制反转-Inversion Of Control 5.使用 spring 的 的 I ...

  4. Vue + Spring Boot 学习笔记02:引入数据库实现用户登录功能

    Vue + Spring Boot 学习笔记02:引入数据库实现用户登录功能 在学习笔记01里,我们利用跨域打通了前端的Vue与后端的Spring Boot,实现了用户登录功能,但是后台的登录控制器在 ...

  5. Spring学习笔记:第一个Spring Boot程序HelloWorld

    Spring学习笔记:第一个Spring Boot程序HelloWorld 一.跟着 Spring 了解技术趋势 1.看看 Spring 5.x 的改变暗示了什么 2.Spring Boot 和 Sp ...

  6. spring学习笔记03-spring-DI-依赖注入详解(通过xml配置文件来配置依赖注入)

    spring学习笔记03-spring-DI-依赖注入详解 1.概念 2.构造函数注入 3.set方法注入 4.集合的注入 需要被注入的实体对象 package com.itheima.service ...

  7. python学习笔记02

    python学习笔记02 面向对象Object Oriented 概述 类和对象 封装 继承 多态 类与类的关系 设计原则 总结 python学习笔记03 面向对象Object Oriented 概述 ...

  8. 【计算机网络学习笔记02】计算机网络概述(中)

    [计算机网络学习笔记02]计算机网络概述(中) 计算机网络的定义.组成与分类 1计算机网络的定义 1.1 简单定义: 一些相互连接的.以共享资源为目的的.自治的计算机的集合. 1.2 通用定义: 利用 ...

  9. Spring学习笔记之MyBatis

    系列文章目录 Spring学习笔记 之 Springhttps://blog.csdn.net/weixin_43985478/article/details/124411746?spm=1001.2 ...

最新文章

  1. 计算机书籍-机器学习预测分析Go语言实现
  2. MATLAB与C#混合编程
  3. css的三种定位方式使用探讨
  4. linux驱动篇之 driver_register 过程分析(一)
  5. 多生产者_你是生产者还是消费者?这决定了你的层次。
  6. 如何自定义Hibernate脏检查机制
  7. Ubuntu作为服务器其tomcat被远程访问问题
  8. VC++实现混合静态分裂视窗的方法
  9. ES6 import export
  10. STL的Vector介绍
  11. 探索社群系统ThinkSNS品牌10周年!
  12. 嵩天《Python数据分析与展示》实例3:Matplotlib基础图表绘制
  13. 下载Instagram的图片
  14. 虚拟机配置--网络、MySQL数据库、JDK环境变量
  15. 不用等微信官方!微信圣诞帽,我用Python就能搞定!
  16. 多幸运用计算机演奏的乐谱,多幸运钢琴简谱-数字双手-韩安旭
  17. PC端微信扫码支付二维码生成接口的调整
  18. Android UI设计经验分享,掌握设计技巧,让你的应用独树一帜
  19. Pytorch加载torchvision从本地下载好的预训练模型的简单解决方案
  20. Java农历(阴历)工具类

热门文章

  1. mysql异地备份_MySQL数据库异地备份与还原方法
  2. k8s服务器修改ip,[转载][K8S] Kubernetes 集群变更IP地址
  3. ddr4服务器内存和普通内存_DDR4内存可以在普通电脑上使用吗?有影响吗?
  4. 九十六、双指针和滑动窗口算法模板
  5. mysql分区跨机器_(转) mysql的分区技术 .
  6. 北京内推 | 微软亚洲研究院DKI组王露研究员招聘强化学习方向研究实习生
  7. 时间自适应卷积:比自注意力更快的特征提取器
  8. 论文盘点:CVPR 2019 - 文本检测专题
  9. 每周论文清单:高质量文本生成,多模态情感分析,还有一大波GAN | PaperDaily #26
  10. 动态规划-KMP字符匹配算法