依赖注入

1.构造器注入

  • 见spring简介最后一大点。

2.Set方式注入

  • 依赖注入:Set注入

    • 依赖:bean对象的创建依赖于容器。

    • 注入:bean对象的所有属性,由容器注入。

  • bean ,里面属性的注入见下文xml

  1. package com.rzp.pojo;

  2. import java.util.*;

  3. public class Student {
  4. private String name;
  5. private Address address;
  6. private String[] books;
  7. private List<String> hobbys;
  8. private Map<String,String> card;
  9. private Set<String> games;
  10. private String www;
  11. private Properties info;

  12. @Override
  13. public String toString() {
  14. return "Student{" +
  15. "name='" + name + '\'' +
  16. ", address=" + address +
  17. ", books=" + Arrays.toString(books) +
  18. ", hobbys=" + hobbys +
  19. ", card=" + card +
  20. ", games=" + games +
  21. ", www='" + www + '\'' +
  22. ", info=" + info +
  23. '}';
  24. }

  25. public String getName() {
  26. return name;
  27. }

  28. public void setName(String name) {
  29. this.name = name;
  30. }

  31. public Address getAddress() {
  32. return address;
  33. }

  34. public void setAddress(Address address) {
  35. this.address = address;
  36. }

  37. public String[] getBooks() {
  38. return books;
  39. }

  40. public void setBooks(String[] books) {
  41. this.books = books;
  42. }

  43. public List<String> getHobbys() {
  44. return hobbys;
  45. }

  46. public void setHobbys(List<String> hobbys) {
  47. this.hobbys = hobbys;
  48. }

  49. public Map<String, String> getCard() {
  50. return card;
  51. }

  52. public void setCard(Map<String, String> card) {
  53. this.card = card;
  54. }

  55. public Set<String> getGames() {
  56. return games;
  57. }

  58. public void setGames(Set<String> games) {
  59. this.games = games;
  60. }

  61. public String getWww() {
  62. return www;
  63. }

  64. public void setWww(String www) {
  65. this.www = www;
  66. }

  67. public Properties getInfo() {
  68. return info;
  69. }

  70. public void setInfo(Properties info) {
  71. this.info = info;
  72. }
  73. }
  • xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. https://www.springframework.org/schema/beans/spring-beans.xsd">

  6. <bean id="address" class="com.rzp.pojo.Address"/>
  7. <bean id="student" class="com.rzp.pojo.Student">
  8. <!--普通值注入-->
  9. <property name="name" value="rzp"/>
  10. <!--也可以把value写在两个标签中间
  11. <property name="name">
  12. <value>rzp</value>
  13. </property>-->


  14. <!--bean注入-->
  15. <property name="address" ref="address"/>
  16. <!--数组注入-->
  17. <property name="books">
  18. <array>
  19. <value>红楼梦</value>
  20. <value>西游记</value>
  21. <value>水浒传</value>
  22. <value>三国演义</value>
  23. </array>
  24. </property>

  25. <!--List-->
  26. <property name="hobbys">
  27. <list>
  28. <value>听歌</value>
  29. <value>代码</value>
  30. </list>
  31. </property>

  32. <!--Map-->
  33. <property name="card">
  34. <map>
  35. <entry key="学生卡" value="0010"/>
  36. <entry key="校园卡" value="0012110"/>
  37. </map>
  38. </property>

  39. <!--Set-->
  40. <property name="games">
  41. <set>
  42. <value>MHW</value>
  43. <value>DMC</value>
  44. </set>
  45. </property>
  46.  
  47. <!--null-->
  48. <property name="www">
  49. <null/>
  50. </property>

  51. <!--Properties-->
  52. <property name="info">
  53. <props>
  54. <prop key="kclassname">1班</prop>
  55. <prop key="name">rzp</prop>
  56. </props>
  57. </property>
  58. </bean>

  59. </beans>

3.拓展方式注入

  • c命名空间和p命名空间:

  • 要在beans标签中加入:

  1. xmlns:p="http://www.springframework.org/schema/p"
  2. xmlns:c="http://www.springframework.org/schema/c"
  3.  
  4. <?xml version="1.0" encoding="UTF-8"?>
  5. <beans xmlns="http://www.springframework.org/schema/beans"
  6. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  7. xmlns:p="http://www.springframework.org/schema/p"
  8. xmlns:c="http://www.springframework.org/schema/c"
  9. xsi:schemaLocation="http://www.springframework.org/schema/beans
  10. https://www.springframework.org/schema/beans/spring-beans.xsd">

  11. <!--p命名空间,参数注入-->
  12. <bean id="user" class="com.rzp.pojo.User" p:name="rzp" p:age="18"/>
  13. <!--c命名空间,构造器注入-->
  14. <bean id="user2" class="com.rzp.pojo.User" c:name="rzp1" c:age="1"/>


  15. </beans>
  • p命名空间就是对参数注入。

  • c命名空间就是使用构造器注入,必须要有构造器。

Spring(二):初始值赋值的更多相关文章

  1. LongAccumulator类的BUG——reset方法并不能保证初始值正确赋值

    LongAccumulator.reset方法并不能重置重置LongAccumulator的identity:初始值正确,使其恢复原来的初始值.当初始值为0是不会发生这个问题,而当我们设置初始值如1时 ...

  2. 你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)

    3.5.2  字符串类型 使用char类型的变量我们可以表示单个字符,那么,我们又该如何表示拥有多个字符的字符串呢? 我们注意到,一个字符串是由多个字符串连起来形成的.很自然地,一种最简单直接的方法就 ...

  3. [转载]vs2012中使用Spring.NET报错:Spring.Context.Support.ContextRegistry 的类型初始值设定项引发异常

    学习使用Spring.NET中的时候,写了一个Demo,在运行时报了一个错误:Spring.Context.Support.ContextRegistry 的类型初始值设定项引发异常. 重新整理思绪, ...

  4. C#会对于未赋值的变量/成员变量,给予一个初始值吗?

    如果我有程序如下: C# code   ? 1 2 3 4 5 6 7     public class My     {         public bool b;         public  ...

  5. Java未赋值变量的默认初始值

    在 Java 程序中,任何变量都必须经初始化后才能被使用.当一个对象被创建时,实例变量在分配内存空间时按程序员指定的初始化值赋值,否则系统将按下列默认值进行初始化: 数据类型 初始值 byte 0 s ...

  6. 简单模拟IOC容器:为添加了@Autowired的属性赋值(初始值)

    创建@Autowired注解 package com.zzj.test; import java.lang.annotation.ElementType; import java.lang.annot ...

  7. (二)用控制器controller给模型数据赋初始值

    之前博客,非常easy的就实现了模型数据和页面显示的自己主动绑定.如今我们使用控制器,给模型赋初始值. 假设使用jquery来实现变量赋初值,须要在页面载入完毕后运行$("#target&q ...

  8. java 八种基本数据类型之初始值、取值范围、对应的封装类

      CreateTime--2017年12月6日10:03:53 Author:Marydon 一.java数据类型之基本数据类型 (二)八种基本数据类型的特征 import java.math.Bi ...

  9. C#3.0新特性:隐式类型、扩展方法、自动实现属性,对象/集合初始值设定、匿名类型、Lambda,Linq,表达式树、可选参数与命名参数

    一.隐式类型var 从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型var.隐式类型可以替代任何类型,编译器自动推断类型. 1.var类型的局部变量必须赋予初始值,包括匿名 ...

随机推荐

  1. css中:如何让一个图片(不知道宽高,宽高可能比父元素div大),在父元素div内部水平垂直居中,并且不溢出父元素div,且图片不拉伸变形(可等比例缩小)?

    欢迎进入:http://www.jscwwd.com/article/list/%E5%85%A8%E9%83%A8 效果图: 不管父元素的宽高怎么变化,图片都是水平垂直居中的,并且不溢出父元素. 注 ...

  2. vue 父子组件 基础应用scrollball v-model sync

    # 组件之间通信 可以通过 v-model 子组件可以通过 改变数据来改变父组件的数组  * v-model  子组件需要接受value属性,需要出发this.$emit("input&qu ...

  3. 聊聊count(*)

    count(*) 的实现方式 MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高 InnoDB 引擎就麻烦了,它执行 count(*) 的时候 ...

  4. 五分钟了解Consul

    Hi,大家好,我叫consul,翻译成中文叫做“领事”,其实我更喜欢叫自己为中介,因为我觉得自己做的事情和房产中介非常像.比如说想要卖房的房东到我这边登记,我将房屋信息登录到我的表格中(服务注册),有 ...

  5. kerberos系列之kerberos安装

    最近搞了一下kerberos,准备写一个系列,介绍kerberos的安装,和常用组件kerberos配置,今天进入第一篇:kerberOS安装 具体kerberos是什么东西,大家可以百度查一下,这里 ...

  6. asp.net core 3.1 引用的元包dll版本兼容性问题解决方案

    自从.netcore 3.1出来后,大家都想立马升级到最新版本.我也是如此,微软也对.netcore 3.1的官方组件不断升级,几乎每隔几天就会有部分元包可以升级.每次打开Nuget包管理器,“更新” ...

  7. 数据库表结构查询SQL

    今天给大家送上两个SQL查询的方法,也许在项目中你都用过,但是,没关系,仅仅记录下,以便后面不用去查找.针对与经常写SQL的同行来说,应该是非常简单的. 查询表结构数据 SELECT t.COLUMN ...

  8. Mol Cell Proteomics. | Mapping Spatio-temporal Microproteomics Landscape in Experimental Model of Traumatic Brain Injury Unveils a link to Parkinson’s Disease

    期刊:Molecular & Cellular Proteomics 发表时间:June 16, 2019 通讯作者:Michel Salzet,Isabelle Fournier 一.  概 ...

  9. MySQL数据备份与恢复(二) -- xtrabackup工具

    上一篇介绍了逻辑备份工具mysqldump,本文将通过应用更为普遍的物理备份工具xtrabackup来演示数据备份及恢复的第二篇内容. 1.  xtrabackup 工具的安装 1.1  安装依赖包 ...

  10. Python 趣题

    如何优雅判断list为空 list_temp = [] if list_temp: # 存在值即为真 else: # list_temp是空的 在Python中,False,0,'',[],{},() ...