注入参数基本分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 依赖注入(二、注入参数)的更多相关文章

  1. SpringBoot系列: 理解 Spring 的依赖注入(二)

    ==============================Spring 容器中 Bean 的名称==============================声明 bean 有两个方式, 一个是 @B ...

  2. 二十7天 春雨滋润着无形 —Spring依赖注入

    6月11日,明确."夏条绿已密,朱萼缀明鲜.炎炎日正午,灼灼火俱燃." IT人习惯把详细的事物加工成的形状一致的类.正是这种一致,加上合适的规范.才干彰显对象筋道的牙感和bean清 ...

  3. spring学习(二)---依赖注入

    spring第二个特性是依赖注入. 学习依赖注入,首先应该明白两个问题:1,谁依赖谁:2,谁注入,注入什么? 首先还是看代码: 还是这个bean: package testSpring.busines ...

  4. Spring核心技术(二)——Spring的依赖及其注入

    本文将继续前文,描述Spring IoC中的依赖处理. 依赖 一般情况下企业应用不会只有一个对象(或者是Spring Bean).甚至最简单的应用都要多个对象来协同工作来让终端用户看到一个完整的应用的 ...

  5. Spring学习笔记之 Spring IOC容器(一)之 实例化容器,创建JavaBean对象,控制Bean实例化,setter方式注入,依赖属性的注入,自动装配功能实现自动属性注入

    本节主要内容:       1.实例化Spring容器示例    2.利用Spring容器创建JavaBean对象    3.如何控制Bean实例化    4.利用Spring实现bean属性sett ...

  6. Java Web系列:Spring依赖注入基础

    一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是 ...

  7. 为什么多线程、junit 中无法使用spring 依赖注入?

    为什么多线程.junit 中无法使用spring 依赖注入? 这个问题,其实体现了,我们对spring已依赖太深,以至于不想自己写实例了. 那么到底是为什么在多线程和junit单元测试中不能使用依赖注 ...

  8. JAVA入门[3]—Spring依赖注入

    Spring支持属性注入和构造器注入,它支持XML和注解两种方式.本文介绍Spring控制反转容器加载包含beans的XML文件,实现依赖注入. 一.创建bean实例 暂且抛开对象依赖,我们先看下如何 ...

  9. Spring 源码分析之 bean 依赖注入原理(注入属性)

         最近在研究Spring bean 生命周期相关知识点以及源码,所以打算写一篇 Spring bean生命周期相关的文章,但是整理过程中发现涉及的点太多而且又很复杂,很难在一篇文章中把Spri ...

  10. Spring学习笔记二:注入方式

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6774608.html  我们说,IOC的实现方式是依赖注入,也就是把被依赖对象赋值到依赖对象的成员属性.怎么做 ...

随机推荐

  1. [nmon]使用nmon工具监控系统资源

    1.下载nmon 下载正确的nmon版本, 查看linux服务器版本,命令:lsb_release -a,查看到当前系统为RedHat 6.4 然后我们根据我们的linux版本,下载相应nmon版本, ...

  2. Red Hat Enterprise Linux(RHEL)中yum的repo文件详解

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载 ...

  3. Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] B "Or" Game (贪心)

    首先应该保证二进制最高位尽量高,而位数最高的数乘x以后位数任然是最高的,所以一定一个数是连续k次乘x. 当出现多个最高位的相同的数就枚举一下,先预处理一下前缀后缀即可. #include<bit ...

  4. HDU 5094 Maze (状压)

    加一个维度,钥匙的状态,状压一下.n很小,钥匙也只有10个,bfs就好了. 忘了数组初始化.以后坚决不犯这种低级错误. #include<cstdio> #include<queue ...

  5. cdoj 414 八数码 (双向bfs+康拓展开,A*)

    一道关乎人生完整的问题. DBFS的优越:避免了结点膨胀太多. 假设一个状态结点可以扩展m个子结点,为了简单起见,假设每个结点的扩展都是相互独立的. 分析:起始状态结点数为1,每加深一层,结点数An ...

  6. LeetCode分类-前400题

    1. Array 基础 27 Remove Element 26 Remove Duplicates from Sorted Array 80 Remove Duplicates from Sorte ...

  7. springboot(二十一)-集成memcached

    Memcached 介绍 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站 ...

  8. fork新建进程

    #include <sys/types.h>#include<sys/wait.h>#include<unistd.h>#include<stdio.h> ...

  9. 获取地址栏参数,json遍历

    1. 获取地址栏参数 GetQueryString: function(name){ // 获取地址栏参数 var reg = new RegExp("(^|&)"+ na ...

  10. 安装IAR ewarm

    一  安装准备 (ST方案) 1 嵌入式集成开发环境IAR ewarm 5.41 2 J-Link4.20 3 emberznet-4.3.0协议栈安装包 option1:tools - stm32软 ...