首页 > 其他分享 >特殊类型注入-自定义的类

特殊类型注入-自定义的类

时间:2023-07-15 13:34:14浏览次数:37  
标签:String 自定义 Dept dName dept emp 类型 public 注入

尚硅谷 Spring - 22

准备:构造如下两个类

public class Dept {
    private String dName;
    private List<Emp> emps;

    public void setdName(String dName) {
        this.dName = dName;
    }

    public void setEmps(List<Emp> emps) {
        this.emps = emps;
    }

    public String getdName() {
        return dName;
    }

    public List<Emp> getEmps() {
        return emps;
    }

    @Override
    public String toString() {
        return "Dept{" +
                "dName='" + dName + '\'' +
                ", emp=" + emps +
                '}';
    }
}
---
package com.study.spring6.iocxml.deptAndEmp;

public class Emp {
    private String name;
    private String age;
    private Dept dept;

    public void work(){
        System.out.println("emp is working...and his dept is:");
        System.out.println(dept);
    }

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public void setDept(Dept dept) {
        this.dept = dept;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ",dept=" + dept +
                '}';
    }

}

方式一:引用外部 bean

<bean id="dept" class="com.study.spring6.iocxml.deptAndEmp.Dept">
    <property name="dName" value="security"/>
</bean>

<bean id="emp" class="com.study.spring6.iocxml.deptAndEmp.Emp">
    <property name="name" value="lucy"/>
    <property name="age" value="50"/>
    <property name="dept" ref="dept"/>
</bean>

可以看到 emp 中通过 ref 属性注入了 Dept 对象,当然这个做法的前提是配置了 Dept 对象对应的 bean

测试类

package com.study.spring6.iocxml.deptAndEmp;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestEmp {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        Emp emp = (Emp) context.getBean("emp");
        System.out.println(emp);
        emp.work();
    }
}

执行结果

Emp{name='lucy', age='50',dept=Dept{dName='security', emp=null}}
emp is working...and his dept is:
Dept{dName='security', emp=null}

方式二:使用内部 bean

配置

在某一个 property 内部再声明一个 bean 就是内部 bean

注意:内部 bean 只能用于给属性赋值,不能在外部通过 IoC 容器获取,因此可以省略 id 属性

<bean id="emp" class="com.study.spring6.iocxml.deptAndEmp.Emp">
    <property name="name" value="mary"/>
    <property name="age" value="20"/>
    <property name="dept">
        <bean class="com.study.spring6.iocxml.deptAndEmp.Dept">
            <property name="dName" value="money"/>
        </bean>
    </property>
</bean>

执行结果

Emp{name='mary', age='20',dept=Dept{dName='money', emp=null}}
emp is working...and his dept is:
Dept{dName='money', emp=null}

方式三:级联属性赋值

使用的较少

image

特殊类型注入-数组与集合

数组

给 Emp 添加上属性 private String[] love; 表示员工爱好

配置

<bean id="dept" class="com.study.spring6.iocxml.deptAndEmp.Dept">
    <property name="dName" value="IT"/>
</bean>

<bean id="emp" class="com.study.spring6.iocxml.deptAndEmp.Emp">
    <property name="name" value="mary"/>
    <property name="age" value="20"/>
    <property name="dept" ref="dept"/>
    <property name="love">
        <array>
            <value>跑步</value>
            <value>睡觉</value>
            <value>学习</value>
        </array>
    </property>
</bean>

执行结果

Emp{name='mary', age='20', dept=Dept{dName='IT', emp=null}, love=[跑步, 睡觉, 学习]}

标签:String,自定义,Dept,dName,dept,emp,类型,public,注入
From: https://www.cnblogs.com/ShaunY/p/17556010.html

相关文章

  • 特殊类型注入-数组与集合
    数组给Emp添加上属性privateString[]love;表示员工爱好配置<beanid="dept"class="com.study.spring6.iocxml.deptAndEmp.Dept"><propertyname="dName"value="IT"/></bean><beanid="emp"class=......
  • ES 实战复杂sql查询、修改字段类型
    转载请注明出处:1.查询索引得mapping与setting get直接查询索引名称时,会返回该索引得mapping和settings得配置,上述返回得结构如下:{"terra-syslog_2023-07-12":{"aliases":{},"mappings":{"properties":{"@ti......
  • 4、报错注入
     updatexml(),concat() mysql>selectupdatexml(1,concat(0x7e,(selectdatabase()),0x7e),1);ERROR1105(HY000):XPATHsyntaxerror:'~security~' updatexml(),concat_ws() mysql>selectupdatexml(1,concat_ws(0x5c,0x5c,substr(@@v......
  • 25.什么情况下会发生布尔值的隐式强制类型转换
    25.什么情况下会发生布尔值的隐式强制类型转换?(1)if(..)语句中的条件判断表达式。(2)for(..;..;..)语句中的条件判断表达式(第二个)。(3)while(..)和do..while(..)循环中的条件判断表达式。(4)?:中的条件判断表达式。(5)逻辑运算符||(逻辑或)和&&(逻辑与)左边的操作......
  • 19.其他值到布尔类型的值的转换规则
    19.其他值到布尔类型的值的转换规则?ES5规范9.2节中定义了抽象操作ToBoolean,列举了布尔强制类型转换所有可能出现的结果。以下这些是假值:•undefined•null•false•+0、-0和NaN•""假值的布尔强制类型转换结果为false。从逻辑上说,假值列表以外的都应该是真......
  • 107.SQL注入攻击
    107.SQL注入攻击?SQL注入攻击指的是攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构造,破坏原有SQL结构,并在数据库中执行,达到编写程序时意料之外结果的攻击行为。详细资料可以参考:《Web安全漏洞之SQL注入》《如何防范......
  • Python保姆级教程 数据类型—新手小白入门必看系列
    推荐使用压缩软件和杀毒软件7-zip使用火绒一、基本数据类型与变量(上)2.1注释优点:代码说明没注释的代码有注释的代码不让解释器执行注释的那句话2.2单行注释单行注释快捷键:ctrl+?2.3多行注释""""""(三个双引号)2.4字面量变量字面量是已经被定义好的量在......
  • 依赖注入-特殊值处理
    1.字面量赋值字面量,比如:inta=10;,a是变量,10就是字面量。在xml配置的value="xxx"就是给属性赋予了字面量xxx2.空值如果要赋空值,正确的做法是在<property>标签中间,添加上<null/>标签3.xml实体方式一:转义比如<>这两个符号在xml文档中具有特殊含义,不能直接......
  • SQL注入问题、视图、触发器、事务、存储过程、函数、流程控制、索引、测试索引
    SQL注入问题连接MySQL服务器conn=pymysql.connect(host=‘127.0.0.1’port=3306user=‘root’password='1234'......
  • 自定义类型的相等判断
    实现自定义类型的相等性判断(参考链接),步骤如下:重写Object.Equals(object)方法,调用IEquatable.Equals(T)进行实现;实现IEquatable接口,在Equals(T)方法中进行自定义的相等性判断。实现时应先进行运行时类型判断,运行时类型相同才相同,然后判断关键字段是否相等;重载==与!=运算符,非必......