博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring bean注入方式
阅读量:7127 次
发布时间:2019-06-28

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

版权声明:本文为博主原创文章,如需转载请标注转载地址。

博客地址: 

Spring bean提供了3中注入方式:属性注入和构造方法注入

 

1、属性注入:

1 
2
3
4

  属性注入方式,要求属性提供呢setXxx方法。上面提供的是普通属性注入,如果要注入对象属性,可以这样

1 
2
3
4
5

  我们看到第三个属性dept,是一个Dept类型的属性,可以通过ref来引用一个已定义的Dept类型的dept对象。

1 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");2 User user=context.getBean("user", User.class);3 System.out.println(user.getUsername());4 System.out.println(user.getDept().getName());

  结果我们可以看到

caoyc信息部

  除了可以使用ref来引用外部对象外,我们也可以在user对象内部声明一个Dept对象

1 
2
3
4
5
6
7
8
9
10

 

2、使用构造器注入

  假如,有一个User类

package com.proc.bean;public class User {        private int id;    private String username;    private int age;    private double slary;        public User() {                }    public User(int id, String username) {        this.id = id;        this.username = username;    }    @Override    public String toString() {        return "User [id=" + id + ", username=" + username + ", age=" + age                + ", slary=" + slary + "]";    }}

  

 

  这里使用的是: public User(int id, String username)构造方式 

  这里使用的是下标方式,这里省略了index属性。index属性从0开始。上面的代码相当于

1 
2
3
4

 

  假设有这样的两个构造方式

1 public User(int id, String username, int age) { 2     this.id = id; 3     this.username = username; 4     this.age = age; 5 } 6 public User(int id, String username, double slary) { 7     this.id = id; 8     this.username = username; 9     this.slary = slary;10 }

  配置bean

1 
2
3
4
5
6 7
8
9
10
11

   测试代码

1 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");2 User user=context.getBean("user",User.class);3 System.out.println(user);4 5 User user2=context.getBean("user2",User.class);6 System.out.println(user2);

  输出结果

1 User [id=1, username=caoyc, age=0, slary=18.0]2 User [id=1, username=caoyc, age=0, slary=1800.0]

   这里都是调用的public User(int id, String username, double slary)这个构造函数。那么怎么调用public User(int id, String username, int age)这个构造函数呢?

   方法是,在这里我们需要使用到type属性,来指定参数的具体类型

1 
2
3
4
5

  输出结果

1 User [id=1, username=caoyc, age=18, slary=0.0]2 User [id=1, username=caoyc, age=0, slary=1800.0]

 

 

【其它说明】

  1、如果value属性是基本属性直接使用

  2、如果valeu属性是其它类型,需要使用ref引用外部类型或使用内部定义方式

  3、如果value属性中包含了xml特殊字符,需要使用CDATA来。例如:

1 
2
]]>
3

 

你可能感兴趣的文章
BroadLink:三款新品力求无障碍人机交互,三大平台分三期对外开放 ...
查看>>
掌门1对1获3.5亿美元E-1轮融资,华人文化产业基金、中金甲子基金等投资 ...
查看>>
Unity中的通用对象池
查看>>
ORA-00600: internal error code, arguments: [16703], [1403], [28], [...
查看>>
忆芯科技发布新一代国产主控芯片STAR1000P!4月完成量产版本 ...
查看>>
如何用条码标签打印软件实现商品价签制定会员价 ...
查看>>
如何轻松实现个性化推荐系统
查看>>
Mysql高级查询 内连接和外连接详解
查看>>
基于AWS的电子商务网站架构——Web前端
查看>>
基于险企传统资源优势的“一核三环”规划——互联网平台建设
查看>>
社交网络:有意义的不仅是邓巴数
查看>>
MySQL优化案例
查看>>
02 贝叶斯算法 - 案例一 - 鸢尾花数据分类
查看>>
场景数据互为表里!畅想2027,保险行业发展愿景
查看>>
hibernate4整合spring3出现java.lang.NoClassDefFoundError: [Lorg/hibernate/engine/FilterDefinition;...
查看>>
港科大教授权龙:三维视觉重新定义人工智能安防
查看>>
数据库巡检项
查看>>
通过阿里云APP,可以进行ECS,RDS 等实例的管理
查看>>
HBase-Region太多的问题简单总结
查看>>
说说我为什么看好Spring Cloud Alibaba
查看>>