Spring的核心机制依赖注入,Junit测试与Java基础Getter和Setter两种方法意义——2017.07.26...

    今天对Spring的基础理解又加深了一丢丢。

              1 首先Spring的基础配置文件中,主要由以下几个配置文件,

1      <beans xmlns:xsi="http://w3.org/2001/XMLSchema-instance"
2       xmlns="http://www.springframework.org/schema/beans"
3       xsi:schemaLocation="http://www.springframework.org/schema/beans
4       http://www.springframework.org/schema/beans/spring-beans-4.0.xsd>

             

    beans文件的根节点

              xmlns:xsi ——是指xml文件遵守xml规范   xml  schema  instance

               xmlns的意思是 XML namespace

               xsi:schemationLocation:是指具体用到的schema资源.

    2 Spring中的核心机制是依赖注入,那么谈依赖注入,必首先需要知道什么是依赖注入,A调用B,表明的是A与B之间有依赖关系,注入是表示在使用时注入B的实列。

             那么为什么会用这些呢?

            我们首先需要回忆下,对于对象A与对象B,A要调用对象B,有那几种实现方式、

              (1) 通过 new 构造器

              (2) 通过工厂模式

              (3) 通过Spring方式

new方式最简单粗暴,如果调用对象很多,代码直接耦合度会非常高。第二个就会稍微简单一些,简单理解就是工厂把B搞好,我们找工厂就行。第三种方式就是在工厂的模式上进一步简单,把B造好,B主动送上来。

第三种方式中,通常通过IOC容器来控制B送上门来。这就回到我们的主题,如何依赖注入,依赖注入通常有两种方式。

           设值注入:IOC容器通过成员变量的setter方法来注入被依赖对象。那么问题来了,Spring通过什么知道实例之间的依赖关系呢。答案是XML配置文件,即是XML Schema来定义配置文件约束

    <bean id="chinese"    class="org.crazy.app.service.impl.chinese"><property name ="axe"  ref="stoneAxe"/>
    </bean>

       id是该Bean的唯一标识,程序通过id属性来访问该Bean实列

       class:指定该Bean的实现类,注意此处不能用接口,必须是实现类。

        其中如果<property name=""  ref="">

Spring框架中只要出现<property.../>子元素,会立马执行Setter方法。

  简单的来概况一下设值注入就是通过setter方法位目标注入依赖关系。

 

   构造注入:在构造实例时已经完成了依赖关系的初始化化,这种利用构造器来设值依赖关系的方式,称为构造注入。通俗来说,就是驱动Spring在底层以反射方式执行带指定参数的构造器,当执行带参数的构造器时,就可以利用构造器参数对成员变量执行初始化。

           此时出现问题,Spring默认是无参数的构造器来创建对象。

 

 

2  Getter和Setter方法的好处

  首先Getter和Setter两个方法是什么?这两个方法其实是读与写两个操作,getter是外部读取操作,函数必须有返回值,且函数名是内部变量名,对成员变量进行取值操作。setter是内部写入操作,对成员变量进行赋值,相当于写入操作。

二者的好处:1 我的感触是提供了代码的封装,外部不会轻易改变内部代码的值。(别人概括的经典话是:内部储存与外部表现不同)   2 在对外部接口不变的情况下,修改内部储存方式和逻辑  3 可以有不同的访问级别

 

3Junit 测试

    Junit测试是什么?怎么用?

          Junit是一个Java语言单元测试框架,有点类似于白盒测试,此时程序员清楚知道程序的内部逻辑结构,程序员知道完成什么样的逻辑功能与完成后会怎么样?

             怎么用?需要导入Junit包,结合项目进一步使用。(明天继续补充)

  

                                                                                                                

转载于:https://www.cnblogs.com/linjingjia/p/7242399.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32的map文件学习笔记

前言 前几个月针对公司自己的芯片写了个程序&#xff0c;这个程序有个硬性要求&#xff0c;就是能用的FLASH空间只有4KB&#xff0c;之前已经写得差不多了&#xff0c;最终占用空间3.6KB。这不&#xff0c;最近又得加需求&#xff0c;还剩一点点FLASH空间可以使用&#xff0c;这…

html网易云音乐图片轮播效果,Vue之网易云音乐PC版轮播图的实现

Github - program-learning-lists最近在刷网易云音乐歌单时发现首页的轮播图很有意思&#xff0c;正好自己想尝试做一个PC版的网易云音乐&#xff0c;于是就是使用Vue去做这个demo&#xff0c;废话少说&#xff0c;我要出招了&#xff0c;接招吧页面的DOM结构:style"slide…

python教程答案十九章_Python 编程从入门到实践 第19章 注销一节问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼现在网上的教程都是第1版的&#xff0c;很多代码都不能用&#xff0c;官网下了第2版的代码&#xff0c;一路用第1版教程修修改改好不容易到第19章 19.2.3 注销 这一节&#xff0c;现在遇到个问题&#xff0c;过不去了。。。求教大家…

深入理解mybatis原理, Mybatis初始化SqlSessionFactory机制详解(转)

文章转自http://blog.csdn.net/l454822901/article/details/51829785 对于任何框架而言&#xff0c;在使用前都要进行一系列的初始化&#xff0c;MyBatis也不例外。本章将通过以下几点详细介绍MyBatis的初始化过程。 1.MyBatis的初始化做了什么 2. MyBatis基于XML配置文件创建C…

我有个队友,叫悟空

昨晚&#xff0c;是我们篮球队年终聚会&#xff0c;好像也是第一次组织篮球队的聚会&#xff0c;之前就只知道在场上打球&#xff0c;场下就没有过这样的吃饭聚会。年终的时候&#xff0c;聚会特别多&#xff0c;该交流感情的交流感情&#xff0c;该年会抽奖的就年会抽奖&#…

go语言html css,html – 在Golang中加载图像和CSS

我在项目根目录的package main中的server.js中设置了一个路由http.HandleFunc( “/”,route.IndexHandler)IndexHandler在包路由中实现,如下所示&#xff1a;func IndexHandler(w http.ResponseWriter, r *http.Request) {data:struct{Name string}{"My name",}util.…

python队列只能一个个读取吗_python队列Queue的详解

QueueQueue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构&#xff0c;即队列&#xff0c;用来在生产者和消费者线程之间的信息传递基本FIFO队列class Queue.Queue(maxsize0)FIFO即First in First Out,先进先出。Queue提供了一个…

C#基于LibUsbDotNet实现USB通信(一)

网上C#USB通信的资料比较少&#xff0c; 基本上都是基于LibUsbDotNet 和 CyUsb, 关于打印机设备的还有一个OPOS。 本篇文章基于LibUsbDotNet。 1. 下载并安装 LibUsbDotNet 安装文件。 2. 运行Filter Wizard, Install a device filter。 安装需要通信的usb设备。 3. 建一个简单…

一个大神的Android成长之路

这篇文章是我的一个朋友写的&#xff0c;总结了这些年的技术成长之路&#xff0c;我觉得对于很多技术人都有借鉴的作用&#xff0c;技术是相通的&#xff0c;不要整天想一口气吃成一个胖子&#xff0c;不积跬步无以至千里&#xff0c;既然选择了技术这条路&#xff0c;就不畏艰…

银联Apple Pay 总结

最近在空余的时间做了银联Apple Pay,是银联快捷支付,在手机钱包里面绑定银行卡,在购买商品的时候直接指纹支付就可以了. 首先你看一线Apple Pay的官方文档:Apple Pay Human Interface Guidelines. 因为按钮和界面的原因,苹果拒绝我2次了. 按钮要使用苹果自带的Apple Pay按钮,要…

jsp页面内引入静态html,JSP技术实现动态页面到静态页面的方法

本文是介绍了jsp技术实现动态页面到静态页面的方法&#xff0c;分享给大家&#xff0c;具体如下&#xff1a;对于JSP技术实现动态页面到静态页面的方案&#xff0c;我们从三个步骤来说明&#xff1a;JSP技术实现动态页面到静态页面的方案第一&#xff1a;为了能深入浅出的理解这…

python loads_python dumps和loads区别详解

这篇文章主要介绍了python dumps和loads区别详解,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下一.概念理解json是一种轻量级的数据交换格式&#xff0c;对象由花括号括起来的逗号分割的成员构成&#xff0c;成…

串口通讯你真的会了吗?不妨看看这些经验

平时使用串口打印出现乱码的绝大部分原因是串口波特率没对。那么我们怎么测量实际的波特率呢&#xff1f;在这之前&#xff0c;顺便一起回顾一下波特率的概念。什么是波特率、比特率&#xff1f; 比特率(Bitrate)表示每秒钟传输的二进制位数&#xff0c;单位为比特每秒(bit/s)。…

html分类代码查询,html标签元素分类(示例代码)

在CSS中&#xff0c;HTML中的标签元素可以被分成三种类型&#xff0c;分别是&#xff1a;块状元素、内联元素和内联块状元素。常用的块状元素有&#xff1a;、、(......标题)、、、、(长引用)、块状元素的特点&#xff1a;1、一个块状元素独占一行&#xff1b;2、块状元素的高度…

7月27

Ddl语句&#xff0c;数据定义表 &#xff0c;创建删除。SQL 结构化查询语句 DML数据操控表&#xff1a;对数据进行操作&#xff0c;如增删查改 Grid control网络控制 control 像是一个集成的管理工具。Bi做数据仓库的应用。 Entity实体集 每个实体集是表&#xff0c;每个…

一些函数、变量命名法及代码规范

驼峰命名法 骆驼式命名法&#xff08;Camel-Case&#xff09;又称驼峰式命名法&#xff0c;也称小驼峰式命名法。骆驼式命名法就是当变量名或函数名是由一个或多个单词连结在一起时&#xff0c;第一个单词以小写字母开始&#xff1b;从第二个单词开始以后的每个单词的首字母都采…

linux 信号_[入门]谈一谈Linux中的信号

也许有一些同学有这样的疑问&#xff1a;kill -9 PID 中的 -9 到底是什么意思&#xff1f;Ctrl C 是为什么可以停止掉运行的程序&#xff1f;1. 什么是信号&#xff1f;在计算机科学中&#xff0c;信号是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方…

计算机应用技术专业课程改革方案,【计算机维护论文】计算机应用技术专业教学改革方案(共4015字)...

一、新课改背景下计算机应用技术专业教学创新型改革的必要性新课改背景下计算机应用技术专业教学创新新改革的必要性主要包括以下三点。第一&#xff0c;当前计算机应用技术专业教学存在教学计划单一且教学缺乏灵活性和创新性的问题&#xff0c;在一定程度上制约和影响计算机应…

多校第二场C题

水贪心 #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<queue> #include<set> using namespace std; typedef long long ll; typedef pair<int,int> pii; #define M…

终于讲透了,史上最详细的RS485串口通讯!

RS485接口组成的半双工网络&#xff0c;一般是两线制&#xff0c;多采用屏蔽双绞线传输&#xff0c;这种接线方式为总线式拓扑结构在同一总线上最多可以挂接32个结点。我们知道&#xff0c;最初数据是模拟信号输出简单过程量&#xff0c;后来仪表接口是RS232接口&#xff0c;这…