博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
On the way learning spring 4
阅读量:7028 次
发布时间:2019-06-28

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

Spring-19 Auto-Wiring  by type

在Xml文件中定义bean之间的关系时,有3种方法:

1. inner bean

2. 在bean 的property中定义另外一个bean

3. Spring Autowiring(有很多种类型, 这里 by type)

 

Auto-wiring 的两个问题:

1. When project is very big, it hard to know what exactly happen when use Auto-wiring.

2. beans which are wired should exactly matched. It will exist error casue of ambiguity. For example:

 

Interface 的 Implement  也可能出现 ambiguity的问题。

 

package com.caveofprogramming.spring.test;public class Logger {        private ConsoleWriter consoleWriter;    private FileWriter fileWriter;    public void setConsoleWriter(ConsoleWriter consoleWriter) {        this.consoleWriter = consoleWriter;    }    public void setFileWriter(FileWriter fileWriter) {        this.fileWriter = fileWriter;    }        public void writeFile(String text){        fileWriter.write(text);    }        public void writeConsole(String text){        consoleWriter.write(text);    }    }

 

 

Spring-20 Autowiring by Name

 

(注意 logger.class与 Spring-19 中的区别 ambiguity)

package com.caveofprogramming.spring.test;public class Logger {        private LogWriter consoleWriter;    private LogWriter fileWriter;    public void setConsoleWriter(LogWriter writer) {        this.consoleWriter = writer;    }    public void setFileWriter(LogWriter fileWriter) {        this.fileWriter = fileWriter;    }        public void writeFile(String text){        fileWriter.write(text);    }        public void writeConsole(String text){        consoleWriter.write(text);    }    }

 

而且,variables 和 bean中的 id 要 match。

 

Spring-21 Autowiring by Constructor

package com.caveofprogramming.spring.test;public class Logger {        private LogWriter consoleWriter;    private LogWriter fileWriter;        public Logger(ConsoleWriter consoleWriter, FileWriter fileWriter){        this.consoleWriter = consoleWriter;        this.fileWriter = fileWriter;    }    public void setConsoleWriter(LogWriter writer) {        this.consoleWriter = writer;    }    public void setFileWriter(LogWriter fileWriter) {        this.fileWriter = fileWriter;    }        public void writeFile(String text){        fileWriter.write(text);    }        public void writeConsole(String text){        consoleWriter.write(text);    }    }

Constructor 是通过Type来match的??

用了autowire=“constructor”后,不能再property??

 

 

Spring-22 Default Autowiring 

解决Defalult Autowiring 中的byType中的ambiguity

package com.caveofprogramming.spring.test;public class Logger {        private ConsoleWriter consoleWriter;    private FileWriter fileWriter;        /*    public Logger(ConsoleWriter consoleWriter, FileWriter fileWriter){            this.consoleWriter = consoleWriter;            this.fileWriter = fileWriter;        */    public void setConsoleWriter(ConsoleWriter writer) {        this.consoleWriter = writer;    }    public void setFileWriter(FileWriter fileWriter) {        this.fileWriter = fileWriter;    }        public void writeFile(String text){        fileWriter.write(text);    }        public void writeConsole(String text){        consoleWriter.write(text);    }    }

 

 

Spring-22 Removing Autowire Ambiguities

1. autowire-cadidate="false"

2. primary = "true"

 

转载于:https://www.cnblogs.com/patrickspring/p/4912924.html

你可能感兴趣的文章
207. Course Schedule
查看>>
如何优化您的 Android 应用 (Go 版)
查看>>
crossplatform---Nodejs in Visual Studio Code 01.简单介绍Nodejs
查看>>
UEditor富文本编辑框学习
查看>>
Trie树实现
查看>>
Opencv无法调用cvCaptureFromCAM无法打开电脑自带摄像头
查看>>
Exception异常处理机制
查看>>
复杂的web---web中B/S网络架构
查看>>
编写文档的时候各种问题
查看>>
Eclipse里maven的project报Unbound classpath variable: 'M2_REPO/**/***/***.jar
查看>>
新旅程CSS 基础篇分享一
查看>>
查看内核函数调用的调试方法【原创】
查看>>
个人项目中遇到的问题
查看>>
byte与base64string的相互转化以及加密算法
查看>>
20145103 《Java程序设计》第3周学习总结
查看>>
J-19 集合对象
查看>>
转载 IOS开发之---static变量
查看>>
【带着canvas去流浪(8)】碰撞
查看>>
ubuntu声音系统
查看>>
来自一个程序员内心深处的心声
查看>>