博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring(二)——注入对象
阅读量:7237 次
发布时间:2019-06-29

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

首先明确xml文件中的一些配置:

id和name:表示标识这个<bean>节点,name可以有特殊字符
scopebean的生存范围,有singleton(单例,默认)、prototype(非单例)、request、session、globalsession
class表示关联的类文件名称(包名 + 类名)
value注入基本数据类型或字符串
ref注入一个对象引用
factory-bean调用的工厂Bean实例
factory-method调用的工厂方法
<property>节点可以调用类中的setter方法,name对应参数名称,value对应参数值。
<constructor-arg>节点可以调用类中的构造器,name对应参数名称,value对应参数值。

一:通过构造函数创建对象。

1.无参构造函数+setter方法注入值

package com.spring.bean;public class Person {    private String name;    private Integer id;        public String getName() {        return name;    }    public void setName(String name) {//调用这个        this.name = name;    }    public Integer getId() {        return id;    }    public void setId(Integer id) {//调用这个        this.id = id;    }}

XML配置:

2 利用有参构造函数直接注入

package com.mc.base.learn.spring.bean;public class Person {    private String name;    private Integer id;        public Person(String name, Integer id) {//调用这个        super();        this.name = name;        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }}

xml配置:

二.静态工厂创建(使用静态方法)

静态工厂的对象,在容器加载的时候就被创建了。

public static Person createPerson(Integer id,String name){    return new Person(name,id);    }

xml:

三、通过实例工厂方式创建对象

实例工厂就是通过实例来调用对象,但是所得到的对象最终也是单例模式。实例工厂和静态工厂创建的对象都是单例模式,两者的区别就是创建对象的实际不同,静态工厂是在创建容器的时候就创建了,实例工厂是在调用方法的时候才创建。

public class PersonFactory {    //非静态方法返回实例    public Person createInstance() {        return new Person();    }}

xml:

四.自动装配

在bean节点中, 添加autowire属性来完成自动装配的操作

1,no : 默认设置 , 表示关闭自动装配
2,byName : 通过名称完成自动装配:
例如: 当前我们容器中存在一个对象, id为book;
而刚好当前的这个person类中有一个名称为book的属性
那么这个时候, 我们的容器, 会自动完成两个对象的关联
byName 不会判断传入的参数类型是否匹配, 只要名称相同, 就会强行建立依赖关系 , 导致报错!

3, byType : 通过类型完成自动装配

例如: 当前我们容器中存在一个Book类的对象
而刚好我们当前的Person有一个Book类型的属性
我们的容器, 就会自动完成两个对象的关联。如果存在多个同类型对象则报错
4,constructor 与byType的方式类似,不同之处在于它应用于构造器参数
5,autodetect 通过bean类来决定是使用constructor还是byType方式进行自动装配。如果发现默认的构造器,那么将使用byType

转载地址:http://nxgfm.baihongyu.com/

你可能感兴趣的文章
《VMware Virtual SAN权威指南(原书第2版)》一1.6 从管理员角度来看VSAN的样子...
查看>>
全球区块链商业理事会中国中心成立,推动全球区块链共识教育
查看>>
话说数据中心里的软件定义
查看>>
语音识别谁最强?微软宣称错误率全球最低
查看>>
IT必读:OA中如何制作转正申请单
查看>>
从和颐酒店事件来看地方安防标准的作用
查看>>
特朗普要筑“墙”硅谷外籍精英看重墙上的“门”
查看>>
美国黑客迷上"黑"医院 信息安全如何保障?
查看>>
拯救脆弱的智慧城市:不但要“智商” 还得有“生气”
查看>>
SoftBank和 Actility结盟 加速日本物联网发展
查看>>
印度麦当劳应用麦乐送泄露220多万用户数据
查看>>
光伏6.30抢装并网规模近15GW 光伏产品均价仍有上涨空间
查看>>
去IOE的又一利器,PingCAP打算创造一款更适合云计算的分布式数据库
查看>>
升级版CRM规则发布 四大变化完善信用风险管理机制
查看>>
新常态下光伏等电力工业的发展预测
查看>>
服务器重启时又具有哪些危害了
查看>>
安防监控系统组成部分介绍
查看>>
AT&T在宣传语中对用户说“谢谢” 花旗银行不干了
查看>>
中国个人信息安全和隐私保护报告:两成人曾受电信诈骗恐吓
查看>>
SimpliVity公司高管谈IT“难以忍受的复杂性”
查看>>