Spring学习笔记-DI(依赖注入)
构造器注入(见前贴)
Set注入【重点】
- 依赖注入:Set注入
 - 依赖:bean对象的创建依赖于容器
 
- 注入:bean对象的所有属性由容器来注入
 
【环境搭建】
- 复杂类型
 
// Class Address
package cn.iris.pojo;
/**
 * @author Iris 2021/8/10
 */
public class Address {
    private String address;
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}
- 真实测试对象
 
// Class Student
package cn.iris.pojo;
import java.util.*;
/**
 * @author Iris 2021/8/10
 */
public class Student {
    private String name;
    private Address address;
    private String[] books;
    private List<String> hobbies;
    private Map<String, String> friends;
    private Set<String> games;
    private Properties info;
    private String lady3;
}
- applicationContext.xml
 
//applicationContext.xml(略)
【官网Copy||IDEA直接创建】
--- 注入部分 ---
    <bean class="cn.iris.pojo.Student" id="student">
        <!--普通类型注入,value-->
        <property name="name" value="iris"/>
        <!--bean注入,ref-->
        <property name="address" ref="address"/>
        <!--数组-->
        <property name="books">
            <array>
                <value>King</value>
                <value>Queen</value>
            </array>
        </property>
        <!--list-->
        <property name="hobbies">
            <list>
                <value>Basketball</value>
                <value>ComputerGames</value>
            </list>
        </property>
        <!--map-->
        <property name="friends">
            <map>
                <entry key="GF" value="Molly"/>
            </map>
        </property>
        <property name="games">
            <set>
                <value>GTAV</value>
                <value>LOL</value>
                <value>CS:GO</value>
            </set>
        </property>
        <!--null-->
        <property name="lady3">
            <null/>
        </property>
        <!--property-->
        <property name="info">
            <props>
                <prop key="SID">201931771338</prop>
                <prop key="Class">3</prop>
                <prop key="driver">abaaba</prop>
                <prop key="url">ip:port/abc</prop>
                <prop key="username">root</prop>
                <prop key="password">123456</prop>
            </props>
        </property>
    </bean>
- 测试类
 
public class MyTest {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        Student student = (Student) context.getBean("student");
        System.out.println(student.getName());
    }
}
拓展方式注入
官方解释


p命名空间注入(p-namespace)【对应Set注入】
<!--p命名空间注入,可直接注入属性的值-->
<bean id="user" class="cn.iris.pojo.User" p:name="iris" p:age="19"/>
c命名空间注入(c-namespace)【对应Constructor-arg注入】
<!--c命名空间注入,构造器注入-->
<bean id="user2" class="cn.iris.pojo.User" c:age="19" c:name="iris"/>
测试
    @Test
    public void test2() {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        User user = context.getBean("user", User.class);
        System.out.println(user);
        User user2 = context.getBean("user2", User.class);
        System.out.println(user2);
    }
注意点
- p命名与c命名不能直接使用,需要导入【xml约束】
 
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
												
											Spring学习笔记-DI(依赖注入)的更多相关文章
- angular2 学习笔记 ( DI 依赖注入 )
		
refer : http://blog.thoughtram.io/angular/2016/09/15/angular-2-final-is-out.html ( search Dependency ...
 - Asp.net core 学习笔记 ( DI 依赖注入 )
		
比起 Angular 的依赖注入, core 的相对简单许多, 容易明白 所有 provider 都在 startup 里配置. public void ConfigureServices(IServ ...
 - Spring学习笔记1—依赖注入(构造器注入、set注入和注解注入)
		
什么是依赖注入 在以前的java开发中,某个类中需要依赖其它类的方法时,通常是new一个依赖类再调用类实例的方法,这种方法耦合度太高并且不容易测试,spring提出了依赖注入的思想,即依赖类不由程序员 ...
 - Spring学习笔记之依赖的注解(2)
		
Spring学习笔记之依赖的注解(2) 1.0 注解,不能单独存在,是Java中的一种类型 1.1 写注解 1.2 注解反射 2.0 spring的注解 spring的 @Controller@Com ...
 - SpringMVC:学习笔记(11)——依赖注入与@Autowired
		
SpringMVC:学习笔记(11)——依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...
 - Java开发学习(六)----DI依赖注入之setter及构造器注入解析
		
一.DI依赖注入 首先来介绍下Spring中有哪些注入方式? 我们先来思考 向一个类中传递数据的方式有几种? 普通方法(set方法) 构造方法 依赖注入描述了在容器中建立bean与bean之间的依赖关 ...
 - Spring.NET学习笔记6——依赖注入(应用篇)
		
1. 谈到高级语言编程,我们就会联想到设计模式:谈到设计模式,我们就会说道怎么样解耦合.而Spring.NET的IoC容器其中的一种用途就是解耦合,其最经典的应用就是:依赖注入(Dependeny I ...
 - [跟我学spring学习笔记][DI循环依赖]
		
循环依赖 什么是循环依赖? 循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方. Spring容器循环依赖包括构造器循环依赖和setter循环依赖,那Spring容器如何解决循环依赖呢? ...
 - [跟我学Spring学习笔记][DI配置与使用]
		
DI 依赖和依赖注入 定义 传统的依赖一般指"类之间的关系",那先让我们复习一下类之间的关系: 泛化:表示类与类之间的继承关系.接口与接口之间的继承关系: 实现:表示类对接口的实现 ...
 
随机推荐
- Unity使用Photon PUN2设置中国区服务器
			
原文地址:Unity使用Photon PUN2设置中国区服务器 入门系列 PUN2选择中国区服务器 先搜索中国区官网 选择试用购买 绑定你的Appid 注意: 当你的Appid申请了中国区后,海外的你 ...
 - 创建Cloudflare CDN
			
背景说明: XX全球版项目CDN, 原有改之前:主CDN为Akamai,备CDN为Cloudflare. 计划改之后:主CDN为Cloudflare,备CDN为Akamai. 原因:Akamai CD ...
 - POJ 1654 Area 多边形面积 G++会WA
			
#include<stdio.h> #include<algorithm> #include <cstring> using namespace std; type ...
 - 用java实现斐波那契数列
			
斐波那契数列源于数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入的计算问题.假设某种兔子兔子,出生第一个月变成大兔子,大兔子再过一个月能生下一对小兔子,且一年 ...
 - 学习django的日子
			
bilibii这个网站是个学习者网站,里面有很多学习视频
 - XCTF_Android 黑客精神
			
一.概述 这题感觉要懂一些开发的东西才能弄,正向和逆向是永远离不开的 二.先用jeb打开,找到AndroidMainfest这个文件,找到启动的主活动是啥 虽然一般也是就是MainActiivity, ...
 - 白话边缘计算解决方案 SuperEdge
			
一.SuperEdge的定义 引用下SuperEdge开源官网的定义: SuperEdge is an open source container management system for edge ...
 - css--filter(滤镜) 属性
			
前言 前段时间找工作面试官问到一个问题,你如何将一个网页整体置灰?面试遇到这样的问题,一下束手无策,之前没有接触过这样的需求,因此没有回答上来,面试结束我才知道了这是考查对 CSS3 的新属性的了解. ...
 - vue(18)路由懒加载
			
什么是路由懒加载 官方的解释: 当打包构建应用时,JavaScript 包会变得非常大,影响页面加载. 如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更 ...
 - 「AGC034D」 Manhattan Max Matching
			
「AGC034D」 Manhattan Max Matching 传送门 不知道这个结论啊... (其实就是菜嘛) 首先 \(O(n^2)\) 的建边显然不太行. 曼哈顿距离有这样一个性质,如果将绝对 ...