Bean 的自动装配
时间:2020-05-13
本文章向大家介绍Bean 的自动装配,主要包括Bean 的自动装配使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Bean 的自动装配
自动装配是Spring满足bean依赖的一种方式
Spring会在上下文中自动寻找,并自动给bean装配属性
在Spring中有三种自动装配的方式
1.在xml中显示的配置
2.在java中显示配置
3.隐式的自动装配bean(重要)
场景:一个人有两个宠物
实体类:
package com.liqiliang.pojo;
public class Dog {
public void shot() {
System.out.println("wang!");
}
}
package com.liqiliang.pojo;
public class Cat {
public void shot(){
System.out.println("miao~");
}
}
package com.liqiliang.pojo;
public class Person {
private Cat cat;
private Dog dog;
private String name;
@Override
public String toString() {
return "Person{" +
"cat=" + cat +
", dog=" + dog +
", name='" + name + '\'' +
'}';
}
public Cat getCat() {
return cat;
}
public void setCat(Cat cat) {
this.cat = cat;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
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="cat" class="com.liqiliang.pojo.Cat"/>
<bean id="dog" class="com.liqiliang.pojo.Dog"/>
<!--在xml中的显示配置-->
<!--<bean id="person" class="com.liqiliang.pojo.Person">
<property name="name" value="李启亮"/>
<property name="cat" ref="cat"/>
<property name="dog" ref="dog"/>
</bean>-->
<!--自动装配-->
<!--
byName:会自动在容器上下文中查找,和自己对象set方法后面的值对应的bean的id
byType:会自动在容器上下文中查找,和自己对象属性类型相同的bean(有弊端,万一出现两个同类型bean)
-->
<bean id="person" class="com.liqiliang.pojo.Person" autowire="byName">
<property name="name" value="李启亮"/>
</bean>
</beans>
小结:byName,需要保证所有bean的id唯一,并且这个bean需要和自动注入的属性的set方法的值一直!
byType,需要保证所有bean的class唯一,并且这个bean需要和自动注入的属性的类型一致
测试类:
import com.liqiliang.pojo.Person;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
@Test
public void test01(){
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("bean.xml");
Person person = (Person) applicationContext.getBean("person");
person.getDog().shot();
person.getCat().shot();
}
}
原文地址:https://www.cnblogs.com/liqiliang1437/p/12881836.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一天一大 leet(字符串相加)难度:简单-Day20200803
- 一天一大 lee(恢复二叉搜索树)难度:困难-Day20200808
- 一天一大 leet(最小区间)难度:困难-Day20200801
- 一天一大 lee(全排列 II)难度:中等-Day20200918
- 一天一大 lee(冗余连接 II)难度:困难-Day20200917
- 一天一大 lee(左叶子之和)难度:简单-Day20200919
- 【一天一大 lee】 把二叉搜索树转换为累加树 (难度:简单)-Day20200921
- 【一天一大 lee】子集 (难度:中等)-Day20200920
- 用了这个jupyter插件,我已经半个月没打开过excel了
- Webpack学习笔记
- 正则表达式学习笔记
- R 可视化 | 华夫饼图
- 绝了!Python定时爬取微博热搜+pyecharts动态图展示
- 实战 | Python爬取B站柯南弹幕+Gephi梳理主线剧情
- 别再问我 Python 怎么识别数字验证码了!