用的是IDEA的maven工程,pom.xml文件导包依赖省略

本文主要写set方式注入

(一)、一般类型注入

一、写两个实体类Car、User

public class Car {
private String color;
private String carName; public String getColor() {
return color;
} public void setColor(String color) {
this.color = color;
} public String getCarName() {
return carName;
} public void setCarName(String carName) {
this.carName = carName;
} @Override
public String toString() {
return "Car{" +
"color='" + color + '\'' +
", carName='" + carName + '\'' +
'}';
}
}
public class User {
private String name;
private Integer age; private Car car; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public Car getCar() {
return car;
} public void setCar(Car car) {
this.car = car;
} @Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", car=" + car +
'}';
}
}

二、书写配置文件applicationContext.xml(由于用的是IDEA,配置文件放在resources文件夹中),并注意约束的导入

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "> <!--set方式注入-->
<bean name="user" class="dyh.so.User">
<!--为User对象的name与age注入Lily和12-->
<property name="name" value="lily"></property>
<property name="age" value="12"></property>
<!--为car属性注入下面的car对象-->
<property name="car" ref="car"></property> </bean> <bean name="car" class="dyh.so.Car">
<!--为Car对象注入属性值-->
<property name="carName" value="兰博基尼"></property>
<property name="color" value="red"></property>
</bean>
</beans>

三、测试

import dyh.so.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; @Test
public void fun(){
//1、创建容器对象
ApplicationContext ct = new ClassPathXmlApplicationContext("applicationContext.xml");
//2、向容器要User对象
User user = (User) ct.getBean("user");
//3、打印在容器中获得的对象
System.out.println(user);
}
}

测试结果:

(二)、复杂类型注入

一、写出要注入的实体类

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties; public class CollectionBean {
private List list;//list/set 类型注入
private Map map;//map类型注入
private Properties prop;//properties类型注入 public List getList() {
return list;
} public void setList(List list) {
this.list = list;
} public Map getMap() {
return map;
} public void setMap(Map map) {
this.map = map;
} public Properties getProp() {
return prop;
} public void setProp(Properties prop) {
this.prop = prop;
} @Override
public String toString() {
return "CollectionBean{" +
", list=" + list +
", map=" + map +
", prop=" + prop +
'}';
}
}

二、书写配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "> <!--set方式注入-->
<bean name="user" class="dyh.so.User">
<!--为User对象的name与age注入Lily和12-->
<property name="name" value="lily"></property>
<property name="age" value="12"></property>
<!--为car属性注入下面的car对象-->
<property name="car" ref="car"></property> </bean> <bean name="car" class="dyh.so.Car">
<!--为Car对象注入属性值-->
<property name="carName" value="兰博基尼"></property>
<property name="color" value="red"></property>
</bean> <!--复杂类型注入--> <bean name="collbean" class="dyh.ss.CollectionBean">
<!--list 注入-->
<property name="list">
<list>
<value>张三</value>
<value>李四</value>
<ref bean="car"/>
<ref bean="user"/>
</list>
</property> <!--map注入-->
<property name="map">
<map>
<entry key="1" value="一"></entry>
<entry key="2" value="二"></entry>
<entry key="3" value="三"></entry>
<entry key-ref="user" value-ref="car"></entry>
</map>
</property> <!-- prperties 类型注入 -->
<property name="prop" >
<props>
<prop key="driverClass">com.jdbc.mysql.Driver</prop>
<prop key="userName">root</prop>
<prop key="password">1234</prop>
</props>
</property>
</bean>
</beans>

三、测试

 @Test
public void fun2(){
//创建容器
ApplicationContext ct = new ClassPathXmlApplicationContext("applicationContext.xml");
//向容器中要ConnectionBean对象
Object collbean = ct.getBean("collbean"); //打印出来在spring中获得的对象
System.out.println(collbean);
}

测试结果

spring学习(三)属性注入的更多相关文章

  1. Spring 学习笔记 ----依赖注入

    依赖注入 有三种方式,本文只学习下属性注入. 属性注入       属性注入即通过 setXxx方法()注入Bean的属性值或依赖对象,由于属性注入方式具有可选择性和灵活性高的优点,因此属性注入方式是 ...

  2. 这篇文章,我们来谈一谈Spring中的属性注入

    本系列文章: 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configuration注解? 谈谈Spring中的对象跟Bean,你知道Spring怎么创 ...

  3. spring ioc三种注入方式

    spring ioc三种注入方式 IOC ,全称 (Inverse Of Control) ,中文意思为:控制反转 什么是控制反转? 控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术. 由容 ...

  4. Spring学习笔记(二)——Spring相关配置&属性注入&Junit整合

    一.Spring的相关配置 1.1 Bean元素 class属性:被管理对象的完整类名 name属性:给Bean起个名字,能重复,能使用特殊字符.后来属性 id属性:给Bean起个名字,不能重复,不能 ...

  5. Spring学习(三)--高级装配

    一.Spring profile 在开发软件的时候,有一个很大的挑战就是将应用程序从一个环境迁 移到另外一个环境.开发阶段中,某些环境相关做法可能并不适合迁 移到生产环境中,甚至即便迁移过去也无法正常 ...

  6. Spring的三种注入方式(Setter、构造函数和自动注入)

    一.Setter注入 这里我是希望在Student.java中调用Course.java中的内容. public class Course { public String name = "数 ...

  7. spring学习之依赖注入DI与控制反转IOC

    一 Ioc基础 1.什么是Ioc? Ioc(Inversion of Control)既控制反转,Ioc不是一种技术,而是一种思想,在Java开发中意味着将设计好的对象交给容器来进行控制,并不是像传统 ...

  8. Spring IOC 三种注入方式

    1.    接口注入 2.    setter注入 3.    构造器注入 对象与对象之间的关系可以简单的理解为对象之间的依赖关系:A类需要B类的一个实例来进行某些操作,比如在A类的方法中需要调用B类 ...

  9. Spring学习笔记--依赖注入

    依赖注入和控制反转:http://baitai.iteye.com/blog/792980出自李刚<轻量级 Java EE 企业应用实战> Java应用是一种典型的依赖型应用,它就是由一些 ...

  10. Spring框架的属性注入

    1. 对于类成员变量,常用的注入方式有两种 * 构造函数注入(没有空的构造方法注入) * 属性setter方法注入(有空的构造方法注入) 2. 在Spring框架中提供了前两种的属性注入的方式 1. ...

随机推荐

  1. 05【掌握】 SpringBoot 清空Redis所有缓存

    package top.yangbuyi.system.controller; import org.springframework.beans.factory.annotation.Autowire ...

  2. HTML5实现DTMF(电话拨号按键信号)解码、编码,代码简单易于移植

    目录 一.前言 1.1 HTML5实现DTMF的一些动机 1.2 一些有效场景 (1) 10086 (2) 软电话 (3) 小玩具 二.DTMF频率按键对照表 三.DTMF信号解码 得到按键值 3.1 ...

  3. SpringBoot--使用Spring Cache整合redis

    一.简介 Spring Cache是Spring对缓存的封装,适用于 EHCache.Redis.Guava等缓存技术. 二.作用 主要是可以使用注解的方式来处理缓存,例如,我们使用redis缓存时, ...

  4. MongoDB快速入门教程 (3.2)

    3.2.索引 索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,建立索引,通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条 ...

  5. 洛谷 P1196 【银河英雄传说】

    这道题其实就是一个带权并查集的基础题,维护的是点权,所以我们要维护两个数组dis:表示当前点到父亲节点的距离,size:当前子树的大小.那么程序就自然出来了: 代码: #include <bit ...

  6. CI CD概念

    CI:持续集成 Continuous Integration CD:持续发布 Continuous Delivery (完)

  7. Python3笔记019 - 4.4 字典

    第4章 序列的应用 python的数据类型分为:空类型.布尔类型.数字类型.字节类型.字符串类型.元组类型.列表类型.字典类型.集合类型 在python中序列是一块用于存放多个值的连续内存空间. py ...

  8. 如何快速部署一条Simplechain子链

    我们都知道Simplechain是一种主子链架构,主链Simplechain是POW共识算法的公链.那如何快速创建一条属于自己的子链呢?下面我们就是快速部署一条子链流程.首先clone 源码, 然后按 ...

  9. Xshell如何连接

    Xshell如何连接

  10. .net core 服务注册生命周期

    在Asp.Net core中的IServiceCollection容器中注册服务的生命周期分以下3种: 1.Transient 通过AddTransient注册,会在IServiceCollectio ...