注入参数基本分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;//注入beanprivate 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;}@Overridepublic 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/beanshttp://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类正在使用它的某些方法!去掉使用的方法就好了)

转载于:https://www.cnblogs.com/claricre/p/6636793.html

Spring 依赖注入(二、注入参数)相关推荐

  1. Spring学习(二)—— 对象创建方式及依赖注入

    文章目录 对象创建方式 配置 依赖注入 构造器注入 Set方式注入 拓展方式注入 对象创建方式 默认使用无参构造器创建 当我们需要使用有参构造器时,有以下几种方式: 1.下标赋值 <!--第一种 ...

  2. spring 依赖注入

    Technorati 标记: spring,依赖注入,DI,ioc 平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的 ...

  3. java接口注入对象的意义_Java Web系列:Spring依赖注入基础

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

  4. 【源码分析】Spring的循环依赖(setter注入、构造器注入、多例、AOP)

    写在前面 首先最简单的循环依赖demo就是:A->B 且 B->A.本文围绕这个例子去讲解setter注入的循环依赖.构造器注入循环依赖.多例的循环依赖.带AOP的循环依赖.以下是一些结论 ...

  5. Spring依赖注入(注解方式)

    Spring依赖注入(注解方式) 在Spring中,尽管使用XML配置文件就可以实现Bean的装配工作,但如果应用中Bean的数量较多,会导致XML配置文件过于臃肿,从而给程序的维护与升级带来一定的困 ...

  6. Spring依赖注入与自动装配

    Spring依赖注入与自动装配 首先推荐狂神说的Spring讲义 1.Beans.xml作用 简而言之,我们通过在beans.xml中进行配置,将各种类交给spring来管理. 2.依赖注入 推荐狂神 ...

  7. Spring——依赖注入(DI)详解

    声明:本博客仅仅是一个初学者的学习记录.心得总结,其中肯定有许多错误,不具有参考价值,欢迎大佬指正,谢谢!想和我交流.一起学习.一起进步的朋友可以加我微信Liu__66666666 这是简单学习一遍之 ...

  8. spring依赖注入的三种方式以及优缺点

    spring依赖注入的三种方式以及优缺点 一.依赖注入的三种方式 1.通过构造器注入.(spring4.3之后,推荐使用) 2.通过setter注入.(spring4.3之前,推荐使用) 3通过fil ...

  9. Spring 依赖注入三种方式的实现,及循环依赖问题的解决(源码+XML配置)

    搬砖啦,搬砖啦,这几天在看Spring相关的书,下面给大家分享一下这几天的心得与收获,Go Go Go! Spring支持两种依赖注入方式,分别是属性注入,构造函数注入.除此之外,Spring还支持工 ...

  10. Spring 依赖注入详解

    一.IOC 依赖注入 1.什么是Spring的依赖注入 依赖注入,是IOC的一个方面,是个通常的概念,它有多种解释.这概念是说你不用创建对象,而只需要描述它如何被创建.你不在代码里直接组装你的组件和服 ...

最新文章

  1. Unity-WIKI 之 AnimationToPNG
  2. 内蒙古自治区2021高考成绩查询时间,内蒙古2021年高考成绩什么时候出来?
  3. 基于CNN的阅读理解式问答模型:DGCNN
  4. Sql Server 2005中的快照隔离
  5. 纯ajax html网页,JavaScript – 页面加载纯HTML AJAX网站中的替代品
  6. Flowable 数据库表结构 ACT_HI_ACTINST
  7. mysql怎么修改表中的文字_mysql表中怎么修改字段?
  8. ubuntu server 14.10 安装 nodejs
  9. Python序列基本操作(三)
  10. IE浏览器常见CSS兼容性问题及解决办法
  11. 【数据库系统设计】关系数据库简介(关系模型、关系模式、关系完整性、关系代数)
  12. 如何巧妙使用Camtasia库中的素材?
  13. 改变button中文字的对齐方式
  14. 双击计算机找不到应用程序,WIN7下双击光驱打不开,提示找不到应用程序,右键
  15. 巴菲特致股东的信pdf_2020年巴菲特致股东的信
  16. 哪种机械键盘更适合打游戏? 机械键盘5种常用机械轴详细介绍
  17. php二级分销kohana源码,php框架kohana(二)
  18. Java架构师-容器化(一):服务容器化技术-Docker、Cloud Foundry
  19. A类计算机机房温度变化,机房的温度、湿度标准值是多少 ?
  20. 华为电脑Linux进pe,华为 matebook X Pro用U盘PE重装系统步骤(xp)

热门文章

  1. 抽象工厂模式-与-工厂方法模式区别
  2. Protobuf 的 proto3 与 proto2 的区别
  3. Linux中sort,uniq,cut,wc命令详解
  4. 你需要知道的12个Git高级命令
  5. Ubuntu桌面版与服务器版的区别
  6. 百度PRNN:增强GPU伸缩性,RNN训练最高提速30倍(源码下载)
  7. Navicat工具、pymysql模块
  8. [网络流24题-7]圆桌问题
  9. SqlServer高级特性--存储过程
  10. JavaScript强化教程——javascript性能优化