博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自动装配【Spring autowire】
阅读量:6912 次
发布时间:2019-06-27

本文共 2033 字,大约阅读时间需要 6 分钟。

public class AutoWiringDao {    private String daoName;    public void setDaoName(String daoName) {        this.daoName = daoName;    }    public String getDaoName() {        return daoName;    }    public void say(String word) {        System.out.println(daoName + "===AutoWiringDao===" + word);    }}

 

public class AutoWiringService {    private AutoWiringDao autoWiringDao1;    private AutoWiringService() {        System.out.println("无参构造方法");    }    private AutoWiringService(AutoWiringDao autoWiringDao3) {        autoWiringDao1 = autoWiringDao3;        System.out.println("有参构造方法===" + autoWiringDao1.getDaoName());    }    public void setAutoWiringDao1(AutoWiringDao autoWiringDao) {        autoWiringDao1 = autoWiringDao;    }    public void say(String word) {        autoWiringDao1.say(word);    }}

以上是所需要的类AutoWiringService与类AutoWiringDao。

1、byName

spring-autowiring.xml文件

 

测试:

AutoWiringService service = getBean("autoWiringService");service.say("this is a test autowire!");

输出:

无参构造方法autoWiringDao1===AutoWiringDao===this is a test autowire!

备注:通过byName方法进行自动装配,

1)、需要无参构造方法;

2)、需要有同名的成员变量,以及该变量的set方法。

 

2、byType

只需要更改spring-autowiring.xml文件

 

输出:

无参构造方法null===AutoWiringDao===this is a test autowire!

备注:通过byType方法进行自动装配,

1)、需要无参构成方法;

2)、同类型的Bean只能存在一个,否则将抛出异常;

3)、需要该成员变量的set方法,其变量名随意,故在spring-autowiring.xml中只需指定该Bean的class即可。

 

3、constructor

只需要更改spring-autowiring.xml文件

输出:

有参构造方法===nullnull===AutoWiringDao===this is a test autowire!

 

备注:通过constructor方法进行自动装配,

1)、需要对应的有参构造方法,若无则抛出异常,当然若有无参构造方法,则不会抛出异常;

2)、当只有一个同类型的成员变量的Bean时,直接指定该Bean的class即可;

3)、同有多个同类型的成员变量的Bean时,其会根据该Bean的名称与构造方法中的形参名进行比较,若不一样,则直接调用无参构造方法。

 

转载于:https://www.cnblogs.com/xiaoxian1369/p/4320423.html

你可能感兴趣的文章
学习 easyui 之三:panel 分析
查看>>
BSTR、char*和CString转换
查看>>
盘点影视剧中的那些经典“清流男”
查看>>
CDC,CPaintDC,CClientDC,CWindowDC
查看>>
信号退出【Linux学习笔记】kill及kill -9的用法及如何实现进程的优雅退出
查看>>
搜索引擎是怎么删除重复网页的
查看>>
Objective-C规范注释心得——同时兼容appledoc(docset、html)与doxygen(html、pdf)的文档生成...
查看>>
ARCGIS RUNTIME FOR IOS总结(六)
查看>>
批量scp脚本——从多台机器拷贝文件
查看>>
Oracle 11g安装图文攻略
查看>>
用VBA宏从一个工作薄复制内容到另一个工作薄
查看>>
Android架构分析之使用自定义硬件抽象层(HAL)模块
查看>>
VC6.0启动File-open和Project-add file to project崩溃的解决方法
查看>>
死锁线程探讨Java中的死锁现象
查看>>
Java HashMap的死循环 以及 LRUCache的正确实现
查看>>
地信快享论坛-见习版
查看>>
hdu1244(dp)
查看>>
VMwarevSphere 服务器虚拟化之二十九 桌面虚拟化之安装View副本服务器
查看>>
基于Levenberg-Marquardt训练算法的BP网络Python实现
查看>>
由判断三一点是否在三角形内部而引发的思考.....
查看>>