applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="video" class="net.cybclass.sp.domain.Video"> <property name="id" value="8"></property> <property name="title" value="SpringBoot课程专题"></property> </bean> <bean id="videoOrder" class="net.cybclass.sp.domain.VideoOrder" autowire="byName"> <property name="id" value="8"></property> <property name="outTradeNo" value="12312"></property> </bean> </beans>
Video.java
package net.cybclass.sp.domain; public class Video { public Video() { System.out.println("Video 默认空构造函数被调用"); } { System.out.println("Video 构造块被调用"); } static { System.out.println("Video static 静态代码块被调用"); } public void init() { System.out.println("Video init 被调用类"); } public void destroy() { System.out.println("Video destroy 被调用类"); } private int id; private String title; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } @Override public String toString() { return "Video{" + "id=" + id + ", title=‘" + title + ‘\‘‘ + ‘}‘; } }
VideoOrder.java
package net.cybclass.sp.domain; public class VideoOrder { private int id; //订单号 private String outTradeNo; private Video video; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getOutTradeNo() { return outTradeNo; } public void setOutTradeNo(String outTradeNo) { this.outTradeNo = outTradeNo; } public Video getVideo() { return video; } public void setVideo(Video video) { this.video = video; } @Override public String toString() { return "VideoOrder{" + "id=" + id + ", outTradeNo=‘" + outTradeNo + ‘\‘‘ + ", video=" + video + ‘}‘; } }
从上我们可以看到byName注入,自动获取bean的id等于video的,当修改bean的id的值为video2的时候,就自动注入不到值类
下面演示注册2次bean的,会抛异常
expected single matching bean but found 2: video2,video3
为VideoOrder.java添加构造函数
修改applicationContext.xml
底层也是根据byType注入的
原文:https://www.cnblogs.com/chenyanbin/p/13304762.html