注入参数基本分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的实现方式是依赖注入,也就是把被依赖对象赋值到依赖对象的成员属性.怎么做 ...
随机推荐
-
辛巴学院-Unity-剑英陪你零基础学c#系列(二)顺序
这不是草稿 辛巴学院:正大光明的不务正业. 上一次的教程写出来之后,反馈还是挺多的,有很多都做了修改,也有一些让人崩溃,不得不说上几句.有些人有些很奇怪的地方,你写篇东西,被看了以后不说他感觉怎么 ...
-
<;2016-1-29>;
1.打电话,发短信,发邮件 //打电话 <script> function call(){ var call = new CallManage(); call.call('10086'); ...
-
java_easyui体系之DataGrid(2)[转]
一:简介 在1的基础上添加layout组件.实现通过条件动态的从后台查询数据到前台展示.使用的方式是将查询单独作为一个layout中的一个面板. 二:关键之处 1.效果图: 2.左侧的折叠组件: 折叠 ...
-
eclipse JAVA实现AES的加密和解密算法
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.Secre ...
-
备忘录 - numpy基本方法总结
一.数组方法 创建数组:arange()创建一维数组:array()创建一维或多维数组,其参数是类似于数组的对象,如列表等 反过来转换则可以使用numpy.ndarray.tolist()函数,如a. ...
-
线程间使用socket通信的计算器
该程序是处理平时的算数运算,程序也没有什么特别之处,只是将所有运算分开运算,每个函数(线程)处理不同的运算符号里面的运算,然后将所有结果都汇总到main函数中进行最后汇总(相加减)运算,每个函数内都处 ...
-
自己动手写spring容器(1)
毕业刚刚一年多一点,毕业了后也顺利的进入了一家著名的互联网公司,做的是后台系统,用的呢也是SSI(struts2,spring)框架,平时做做项目,也已足够了,但是感觉越来越没动力了,越来越没有激情了 ...
-
OpenGL.Tutorial文章转载
ZC:本来以为没有中文版的,原来有中文版,网址为: ZC: OpenGL3.0教程 _ 泰然网.html(http://www.tairan.com/archives/6126/) ZC: OpenG ...
-
springBoot中实现自定义属性配置、实现异步调用、多环境配置
springBoot中其他相关: 1:springBoot中自定义参数: 1-1.自定义属性配置: 在application.properties中除了可以修改默认配置,我们还可以在这配置自定义的属性 ...
-
电脑组装DIY
技嘉主板:B150M-D3H 网卡驱动: CPU: 风扇: 机箱: 显示器: