java ssh 学习_初学Java ssh之Spring 第三篇
在这篇中,我学习了依赖注入的两种方式:设值注入和构造注入。
在我们以前的思维中,如果调用一个类时,我们都需要将其手动实例化,当我们创建被调用的工作不需要我们完成时,这就是控制反转,当这个将被调用的实例过程被Spring完成,并注入调用者时,这就是依赖注入。
一、先来学习学习设值注入:
我们先来新建两个接口规范,分别命名为Computer.java 和 Key.java,其路径均在com.sep.basic.service包下:
Computer.java代码如下:
1 packagecom.sep.basic.service;2
3 public interfaceComputer {4 public voiduseKey();5 }
Key.java代码如下:
1 packagecom.sep.basic.service;2
3 public interfaceKey {4 //一个方法
5 publicString print();6 }
接下来写两个实现类,分别命名为Lenovo.java和LogiTech.java,分别实现Computer和Key接口,路径放在com.sep.basic.service.impl包下。
Lenovo.java代码如下:
1 packagecom.sep.basic.service.impl;2
3 importcom.sep.basic.service.Computer;4 importcom.sep.basic.service.Key;5
6 public class Lenovo implementsComputer{7 privateKey key;8
9 publicKey getKey() {10 returnkey;11 }12
13 //设值注入所需的setter方法
14 public voidsetKey(Key key) {15 this.key =key;16 }17
18 //实现Computer接口中使用键盘的属性
19 public voiduseKey() {20 System.out.println(key.print());21 }22
23 }
LogicTech.java的代码如下:
1 packagecom.sep.basic.service.impl;2
3 importcom.sep.basic.service.Key;4
5 public class LogiTech implementsKey{6 //实现Key接口中打印方法
7 publicString print() {8 return "用键盘打字";9 }10
11 }
接下来我们配置applicationContext.xml文件,在其中加入如下代码:
1
2
3
4
5
6
7
ok,接下来回到我们之前测试用的主方法,SpringTest中,在其中加入如下代码:
//通过Spring来完成注入
Lenovo lenovo = ctx.getBean("lenovo", Lenovo.class);
lenovo.useKey();
现在运行,可以看到控制台输出“用键盘打字”。
在applicationContext.xml中标签中的id为bean的唯一标识,class为对应的需要实例化的类的地址。
通过写在SpringTest中代码可以看出我们调用的lenovo类,我们并没有手动实例化,而且其中调用的key,我们也没有做过多余的操作,所有的工作都是spring帮我们完成的,它通过配置文件,不仅仅创建了我们的Lenovo实例,而且将其中设值注入的key实例也帮我们建好了。
假如我们到时候需要改变key的值,我们只需要写好对应的key的实现类,在配置文件中将
1
2
改为
7
即可。
二、我现在开始学习构造注入:
简单从字面意思上来看,构造注入是利用构造器来完成设置依赖关系的方式。
首先我们需要对之前的Lenovo.class进行修改,修改后的代码如下:
1 packagecom.sep.basic.service.impl;2
3 importcom.sep.basic.service.Computer;4 importcom.sep.basic.service.Key;5
6 public class Lenovo implementsComputer{7 privateKey key;8
9 //默认构造器
10 publicLenovo(){};11
12 //构造注入带参数的构造器
13 publicLenovo(Key key) {14 this.key =key;15 }16
17 //设值注入所需的setter方法
18 public voidsetKey(Key key) {19 this.key =key;20 }21
22 //实现Computer接口中使用键盘的属性
23 public voiduseKey() {24 System.out.println(key.print());25 }26
27 }
同样,配置文件需要做出对应的修改,构造注入需要使用标签来完成,修改后代码如下:
1 <?xml version="1.0" encoding="UTF-8"?>
2
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xmlns:p="http://www.springframework.org/schema/p"
6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
7
8
9
10
11
12
13
运行,同样可以看到语句输出:“用键盘打字”。
ok,两种方法的依赖注入我就都实现了,需要消化的东西很多啊,我还得自己琢磨琢磨,话说打这么多字很累啊,要不是最近工作不怎么忙,我估计得打字打到吐血啊!
java ssh 学习_初学Java ssh之Spring 第三篇相关推荐
- java心得体会_初学java之心得体会
0.前言 从学习java以来,已经进行过三次pta作业的训练.虽然每次作业的完成都遇到了些许困难和障碍,不是一帆风顺的,但通过自己的摸索,实践,总能完成作业要求,每次作业之后都有不同的收获.这些新的收 ...
- java项目学习_一个Java项目的学习
1. java命令行的启动 首先是gradle build 其次是:java -Dabc.appid=1234 -classpath "a.jar:b.jar" com.ctri ...
- java 栈空间_初学JAVA——栈空间堆空间的理解
1.Person pangzi; //这是在"开拓空间"于栈空间 pangzi=new Person(); //这是赋值于堆空间 上两步就是在做与空间对应的事. 2.值 ...
- 学java用什么写比较好_学习Java需要什么基础,初学Java如何写好代码
原标题:学习Java需要什么基础,初学Java如何写好代码 初学Java的同学时常会遇到这样的情况,跟着入门教程看过一遍,但需要自己写代码的时候却无从下手:写代码的时候时常会遇到不懂的地方,如果停下来 ...
- 莆田Java开发_莆田学java编程,莆田java编程学习学校,莆田java编程学习一般能拿多少工资...
莆田学java编程,莆田java编程学习学校,莆田java编程学习一般能拿多少工资 首页 > java > 莆田学java编程 作者:镀金池 发布时间:2017-10-18 06:51 ...
- JAVA技术交流(学习群):51194570;JAVA技术交流(应用群):51194804
JAVA技术交流(学习群):51194570;--Java技术学习交流平台 JAVA技术交流(应用群):51194804 --专注Java EE技术研究与应用 有兴趣的朋友+
- java编程需要数学知识吗_初学Java编程,需要英语和数学基础吗?
原标题:初学Java编程,需要英语和数学基础吗? "学习Java编程英语和数学是必备条件吗?"很多Java零基础学习或者转型IT行业的都会有这样的疑问,其实刚开始学习Java编程是 ...
- java教学目标_成为Java高手的25个学习目标
1.需要精通面向对象分析与设计(OOA/OOD).涉及模式(GOF,J2EEDP)以及综合模式,应该了解UML,尤其是 class,object,interaction以及statediagrams. ...
- java入门应该学什么_初学Java应该掌握哪些基础知识?
Java出现以前,Internet上的信息内容都是一些乏味死板的HTML文档.这对于那些迷恋于WEB浏览的人们来说简直不可容忍.Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中 ...
- 学习java后端路线心得_我最推荐的一张Java后端学习路线图,Java工程师必备
# 阿里面经 [阿里中间件研发面经](http://mp.weixin.qq.com/s?__biz=MzUyMDc5MTYxNA==&mid=2247483852&idx=1& ...
最新文章
- mysql主从数据库含义_(转)Mysql数据库主从心得整理
- C#设置本地网络(DNS、网关、子网掩码、IP)
- pytorch scatter_函数学习笔记
- 页面传值-laber
- linux7.3系统u盘制作,制作centos7U盘启动盘
- 牌类游戏使用微服务重构笔记(八): 游戏网关服务器
- 第八届蓝桥杯第八题日期问题
- OpenGL ES API with no current context
- pdf和图片之间的转换
- 实用工具软件远古大神Nir Sofer,数百款短小精悍便携工具,从Win2000到Win10通吃
- sis forum index.php,SiS001 获取当前服务器的Ip地址
- 年度光电领域盛会——CIOE中国光博会开幕在即!小枣君将全程在线直播!
- mac 装java ecli_Eclipse下Maven安装和配置
- vue3 创建vue3模板
- 八斗大数据20期冲击百万年薪完结分享
- 0.泡妞与设计模式(一)工厂模式
- OkHttp面试之--HttpEngine中的readResponse流程简介
- 基于python 的股票行情查询系统开发(一)
- 键盘鼠标比厕所脏400倍当心电脑操作染疾病
- 大数据24小时:Salesforce拟65亿美元收购Mulesoft,林志颖加盟小黑鱼科技任首席体验官