Spring 依赖注入(二、注入参数)
注入参数基本分7类:
1.基本类型值
2.注入bean
3.内部bean
4.注入null值
5.级联属性
6.List,Set,Map集合的注入
7.properties文件的注入(和集合注入基本是一样的)
下面就是实体类People2,beans.xml的源码

package com.maya.model; import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set; public class People2 {
private int id;
private String name;
private int age;
private Dog dog;//注入bean
private List<String> myList=new ArrayList<String>();//List集合注入
private Set<String> mySet=new HashSet<String>();//Set集合注入
private Map<String,String> myMap=new HashMap<String,String>();//Map集合注入
private Properties jdbc=new Properties();//properties文件注入,和map差不多都是以key、value的形式
public Map<String, String> getMyMap() {
return myMap;
}
public void setMyMap(Map<String, String> myMap) {
this.myMap = myMap;
}
public Set<String> getMySet() {
return mySet;
}
public void setMySet(Set<String> mySet) {
this.mySet = mySet;
}
public List<String> getMyList() {
return myList;
}
public void setMyList(List<String> myList) {
this.myList = myList;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public People2() {
super();
}
public People2(int id, String name, int age, Dog dog) {
super();
this.id = id;
this.name = name;
this.age = age;
this.dog = dog;
} public Properties getJdbc() {
return jdbc;
}
public void setJdbc(Properties jdbc) {
this.jdbc = jdbc;
} @Override
public String toString() {
return "People2 [id=" + id + ", name=" + name + ", age=" + age + ", dog=" + dog + ", myList=" + myList
+ ", mySet=" + mySet + ", myMap=" + myMap + ", jdbc=" + jdbc + "]";
}
//当要使用dog.name是就要注意beans.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="people21" class="com.maya.model.People2">
<constructor-arg name="id" value="0"></constructor-arg>
<constructor-arg name="name" value="张三"></constructor-arg>
<constructor-arg name="age" value="10"></constructor-arg>
<constructor-arg name="dog" ref="dog1"></constructor-arg>
</bean> <!-- 注入bean -->
<bean id="dog1" class="com.maya.model.Dog">
<property name="name" value="阿黄"></property>
</bean> <bean id="people22" class="com.maya.model.People2">
<property name="id" value="1"></property>
<property name="name" value="小明2"></property>
<property name="age" value="22"></property>
<property name="dog" ref="dog1"></property><!-- 注入bean时ref是要注入的bean的id -->
</bean> <!-- 注入内部bean -->
<bean id="people23" class="com.maya.model.People2">
<property name="id" value="3"></property>
<property name="name" value="小明3"></property>
<property name="age" value="33"></property>
<property name="dog">
<bean class="com.maya.model.Dog">
<property name="name" value="UZI"></property><!-- 分开写而已 -->
</bean>
</property>
</bean> <!-- 注入null -->
<bean id="people24" class="com.maya.model.People2">
<property name="id" value="3"></property>
<property name="name" value="小明3"></property>
<property name="age" value="33"></property>
<property name="dog">
<null></null><!-- 给dog属性注入一个null -->
</property>
</bean> <!-- 级联方式注入 -->
<!-- <bean id="people25" class="com.maya.model.People2">
<property name="id" value="3"></property>
<property name="name" value="小明3"></property>
<property name="age" value="33"></property>
<property name="dog.name" value="小明的狗"></property>
注意:以这种方式进行赋值时,因为我们没用注入Dog的实例对象,所以我们要在People2的dog属性后new一个Dog实例!这样才能成功赋值
</bean> --> <!-- 注入List集合,Set集合,Map集合 -->
<bean id="people26" class="com.maya.model.People2">
<property name="id" value="3"></property>
<property name="name" value="小明3"></property>
<property name="age" value="33"></property>
<property name="dog" ref="dog1"></property>
<!-- List集合 -->
<property name="myList">
<list>
<value>a</value>
<value>b</value>
<value>c</value>
<value>d</value>
</list>
</property>
<!-- Set集合,Set集合是自动去掉重复值得!所以输出的结果还是a,b,c -->
<property name="mySet">
<set>
<value>a</value>
<value>b</value>
<value>c</value>
<value>c</value>
<value>b</value>
<value>a</value>
</set>
</property>
<!-- Map集合 -->
<property name="myMap">
<map>
<entry>
<key><value>上午</value></key>
<value>写代码</value>
</entry>
<entry>
<key><value>下午</value></key>
<value>测试代码</value>
</entry>
</map>
</property>
<!-- 配置properties文件 -->
<property name="jdbc">
<props>
<prop key="qd">com.mysql.jdbc.Driver</prop>
<prop key="url">jdbc:mysql://localhost:3306/spring4?characterEncoding=GBK</prop>
<prop key="user">root</prop>
</props>
</property>
</bean> <!-- 配置properties文件 -->
<bean id="people27" class="com.maya.model.People2">
<!-- 在这之前没有为其他属性赋值,这是可以得。但是当使用其引用bean的某些方法时就必须给其赋值而且不能是null -->
<property name="jdbc">
<props>
<prop key="qd">com.mysql.jdbc.Driver</prop>
<prop key="url">jdbc:mysql://localhost:3306/spring4?characterEncoding=GBK</prop>
<prop key="user">root</prop>
</props>
</property>
</bean>
</beans>

常见错误:
Could not resolve matching constructor(构造函数问题)
Loading XML bean definitions from class path resource(实体类中 引用的其他bean类正在使用它的某些方法!去掉使用的方法就好了)
Spring 依赖注入(二、注入参数)的更多相关文章
- SpringBoot系列: 理解 Spring 的依赖注入(二)
==============================Spring 容器中 Bean 的名称==============================声明 bean 有两个方式, 一个是 @B ...
- 二十7天 春雨滋润着无形 —Spring依赖注入
6月11日,明确."夏条绿已密,朱萼缀明鲜.炎炎日正午,灼灼火俱燃." IT人习惯把详细的事物加工成的形状一致的类.正是这种一致,加上合适的规范.才干彰显对象筋道的牙感和bean清 ...
- spring学习(二)---依赖注入
spring第二个特性是依赖注入. 学习依赖注入,首先应该明白两个问题:1,谁依赖谁:2,谁注入,注入什么? 首先还是看代码: 还是这个bean: package testSpring.busines ...
- Spring核心技术(二)——Spring的依赖及其注入
本文将继续前文,描述Spring IoC中的依赖处理. 依赖 一般情况下企业应用不会只有一个对象(或者是Spring Bean).甚至最简单的应用都要多个对象来协同工作来让终端用户看到一个完整的应用的 ...
- Spring学习笔记之 Spring IOC容器(一)之 实例化容器,创建JavaBean对象,控制Bean实例化,setter方式注入,依赖属性的注入,自动装配功能实现自动属性注入
本节主要内容: 1.实例化Spring容器示例 2.利用Spring容器创建JavaBean对象 3.如何控制Bean实例化 4.利用Spring实现bean属性sett ...
- Java Web系列:Spring依赖注入基础
一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是 ...
- 为什么多线程、junit 中无法使用spring 依赖注入?
为什么多线程.junit 中无法使用spring 依赖注入? 这个问题,其实体现了,我们对spring已依赖太深,以至于不想自己写实例了. 那么到底是为什么在多线程和junit单元测试中不能使用依赖注 ...
- JAVA入门[3]—Spring依赖注入
Spring支持属性注入和构造器注入,它支持XML和注解两种方式.本文介绍Spring控制反转容器加载包含beans的XML文件,实现依赖注入. 一.创建bean实例 暂且抛开对象依赖,我们先看下如何 ...
- Spring 源码分析之 bean 依赖注入原理(注入属性)
最近在研究Spring bean 生命周期相关知识点以及源码,所以打算写一篇 Spring bean生命周期相关的文章,但是整理过程中发现涉及的点太多而且又很复杂,很难在一篇文章中把Spri ...
- Spring学习笔记二:注入方式
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6774608.html 我们说,IOC的实现方式是依赖注入,也就是把被依赖对象赋值到依赖对象的成员属性.怎么做 ...
随机推荐
- javase基础-Helloword
public class HelloWorld {//创建一个类 :1.类名首字母需要大写:2.类名必须和文件名一致 public static void main(String[] ...
- ABAP和Java单例模式的攻防
ABAP CLASS zcl_jerry_singleton DEFINITION PUBLIC FINAL CREATE PRIVATE . PUBLIC SECTION. INTERFACES i ...
- JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用
JPA(Java Persistence API)的实现Provider有Hibernate,OpenJPA和EclipseLink等等. 本文介绍如何通过JPA + Eclipse连接SAP云平台上 ...
- Android(java)学习笔记107:Relativelayout相对布局
1. Relativelayout相对布局案例: 我们看看案例代码,自己心领神会: <?xml version="1.0" encoding="utf-8" ...
- C 语言设计坦克大战(未完成)
//坦克大战 //0.提示界面 //1.边框 //2.指定位置显示自己的坦克 //3.己方坦克随着方向键动起来 //getasynkeustae //Sleep(毫秒) //减少闪烁 //不闪烁Set ...
- USACO08FEB Hotel
题目传送门 线段树维护区间 线段树结构体 struct zzz{ int l,r,mi; //l为以左端点的为起点的最长子串 //r为以右端点为终点的最长子串 //mi是区间内部的最长子串 }tree ...
- 【kmp】bzoj3620: 似乎在梦中见过的样子
考察kmp理解题 Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中 ...
- PHP计算今天、昨天、本周、本月、上月开始时间和结束时间
PHP计算今天.昨天.本周.本月.上月开始时间和结束时间 $today = date('Y-m-d H:i:s',mktime(0,0,0,date('m'),date('d'),date('Y')) ...
- destoon添加修改会员信息时,信息丢失
最近做一destoon项目,因注册字段太多,分了几个步骤.分几个页面来修改公司信息.发现有时候修改时以前保存的字段莫名丢失.. 经查是 因为member.class.php add 和 edit时, ...
- java的面向对象 (2013-09-30-163写的日志迁移
1)面向对象的特征 1. 抽象:(从java方面来说抽象大多数人还是把它作为java中的一种特征来对待) 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象包括 ...