在我们初次学习Spring时,肯定会遇到这个简单的操作,让我们菜鸟来感受一下Spring的魅力所在,今天上课就简单的练习了一下。

老师上课说,模拟此功能就是用来让我们这些菜鸟来体验一下Spring的扩展开放功能,方便我们对类对象的操作修改以及更新,而不需大改工程项目,这就是比new一个对象的好处。

自己描述的语言可能不是很正确,欢迎指正

第一步,来看项目的结构

第二步就是写我们需要的Java对象,也就是bean。以及接口
包lnk下的类:

public class Back implements Lnk {@Overridepublic String getColor() {return "黑白";}
}public class Color implements Lnk {@Overridepublic String getColor() {return "彩色";}
}public interface Lnk {public String getColor();
}

包page下的类:

public class A4 implements Page {@Overridepublic String getSize() {return "a4";}
}
public class B5 implements Page {@Overridepublic String getSize() {return "b5";}
}
public interface Page {public String getSize();
}

包print下的类:

import lnk.Lnk;
import page.Page;/*
打印机
开闭原则:  开:对扩展开放  闭:对修改原代码关闭*/
public class Print {private Page page;private Lnk lnk;//打印方法public void print(){System.out.println("正在使用"+this.lnk.getColor()+"颜色墨盒,在"+this.page.getSize()+"纸张上打印");}public Page getPage() {return page;}public void setPage(Page page) {this.page = page;}public Lnk getLnk() {return lnk;}public void setLnk(Lnk lnk) {this.lnk = lnk;}
}

最后是我们的test类:

import print.Print;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public void helloSpring() {// 通过ClassPathXmlApplicationContext实例化Spring的上下文ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");// 通过ApplicationContext的getBean()方法,根据id来获取bean的实例Print p = (Print) context.getBean("print");p.print();}public static void main(String[] args) {Test test = new Test();test.helloSpring();}
}

最后是我们的applicationcontext.xml配置文件、

<?xml version="1.0" encoding="UTF-8"?><!--suppress ALL --><beans xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans"><!--实例化一个bean, scope="prototype" 多例 scope="singleton" 单例 --><!--墨盒--><bean class="lnk.Back" id="back"/><bean class="lnk.Color" id="color"/><!--纸张--><bean class="page.A4" id="a4"/><bean class="page.B5" id="b5"/><!--组装打印机--><bean class="print.Print" id="print"><property ref="b5" name="page"/><property ref="color" name="lnk"/></bean></beans>

Spring简单实现打印机功能-附完整代码相关推荐

  1. Python实现自动翻译功能 - 附完整代码

    Python实现自动翻译功能 - 附完整代码 随着全球化的不断深入,越来越多的人需要跨越语言障碍进行交流.机器翻译技术的出现为这一问题提供了有效的解决方案.今天,我们将通过Python实现一个自动翻译 ...

  2. spring简单实现打印机功能,详细思路分析 小白上手

    标题 思路分析 接口分析 接口实现类 组装打印机 Printer spring 配置文件 测试类 PersonTest 小型Demo结构图 效果图 思路分析 总思路:接口 接口实现类 组装打印机 接口 ...

  3. lenet 5 代码 matlab,Lenet 和 Lenet5 结构简单粗暴详解(附完整代码)

    LeNet LeNet 早期用来识别手写体数字的图像的卷积神经网络 组成部分: 卷积层块 全连接层块 138CFD41-65C8-4ED7-9FB6-ACA8D5E98FEF.png image.pn ...

  4. java抽奖_JAVA实现用户抽奖功能(附完整代码)

    需求分析 1)实现三个基本功能:登录.注册.抽奖. 2)登录:用户输入账号密码进行登录,输入账号后会匹配已注册的用户,若输入用户不存在则退出,密码有三次输入机会,登录成功后主界面会显示已登录用户的账号 ...

  5. java登录注册抽奖完整代码_JAVA实现用户抽奖功能(附完整代码)

    需求分析 1)实现三个基本功能:登录.注册.抽奖. 2)登录:用户输入账号密码进行登录,输入账号后会匹配已注册的用户,若输入用户不存在则退出,密码有三次输入机会,登录成功后主界面会显示已登录用户的账号 ...

  6. Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一)

    Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一) 本文目录: 一.[旋转的精灵女孩]案例运行效果 二.Three.js简介 三.Three.js代码正常运行显示条件 (1)不载入 ...

  7. Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(二)

    Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(二) 本篇目录: 五.实例中所使用的代码语法详细解释 (1).构建一个三维空间场景 (2).选择一个透视投影相机作为观察点 (a).创 ...

  8. SpringSecurity的安全认证的详解说明(附完整代码)

    SpringSecurity登录认证和请求过滤器以及安全配置详解说明 环境 系统环境:win10 Maven环境:apache-maven-3.8.6 JDK版本:1.8 SpringBoot版本:2 ...

  9. php 3d animation,css3D+动画的例子(附完整代码)

    本篇文章给大家带来的内容是关于css3D+动画的例子(附完整代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 最近玩了玩用css来构建3D效果,写了几个demo,所以博客总 ...

最新文章

  1. r语言聚类分析_技术贴 | R语言pheatmap聚类分析和热图
  2. [转载]对 Linux 新手非常有用的20个命令
  3. java get方法不序列化_java常用序列化与反序列化方法
  4. 第一阶段冲刺 第八天
  5. apriori算法代码_资源 | 《机器学习实战》及代码(基于Python3)
  6. 计算机工作在原理课件,滇人版七年级信息技术下册第一单元第一课第三课时计算机工作原理.ppt...
  7. WPD 从便携设备拷贝文件到PC文件不完整的解决办法
  8. 《我也能做CTO之程序员职业规划》和《.NET软件设计新思维——像搭积木一样搭建软件》新书发布会 回顾
  9. 算法分析 - 学习笔记
  10. Python连接DB2数据库
  11. 时间差之天数计算python123
  12. 递归与自我指涉标识牌Top 5
  13. 仿百度文库文档上传页面的多级联动分类选择器
  14. 单片机c语言给变量赋值,单片机c语言变量的定义和赋值
  15. 物联网模块的省电方法
  16. 【Unity】打包时异常 HideFlages.DontSave
  17. 谈谈优惠券系统的设计
  18. JSP SSH校园兼职信息发布平台myeclipse开发mysql数据库MVC模式java编程计算机网页设计
  19. 网络能力认证CCSC-管理1级 技术1级别
  20. Weblogic11g 在linux安装详解

热门文章

  1. 2022第三届全国大学生网络安全精英赛练习题(6)
  2. 国家省市县标准区域码
  3. python 打印当前时间
  4. 转行学java好吗_转行学Java开发怎么样?
  5. 【职场必备知识】成都市人才认定+人才公寓+落户相关材料汇总
  6. 好选客外贸干货分享:船舶找外贸客户
  7. 香港科技大学(广州)刘浩老师招收数据挖掘方向全奖博士/硕士
  8. 解决 Mac 中英文切换频繁出错(删除 ABC)
  9. UG12.0出现验证码错误处理方法,同时附赠一个小细节UG安装出现用户名中文的情况的,希望你能别去花钱重装哦
  10. 第一章:互联网的概述