【SSM框架】依赖注入-创新互联

🍓个人主页:个人主页

网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、成都微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了土默特右旗免费建站欢迎大家使用!

🍒系列专栏:SSM框架

目录

1.依赖注入之setter注入

2.依赖注入之构造器注入

3.特殊值处理

4.为类类型属性赋值

5.为数组类型属性赋值


1.依赖注入之setter注入 ①创建学生类 Student
package com.atguigu.spring.pojo;

public class Student {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;

    public Student() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    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 String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }
}

②配置bean时为属性赋值

③测试

@org.junit.Test
    public void testHelloWorld(){
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        Student student = ac.getBean(Student.class);
        System.out.println(student);


    }

2.依赖注入之构造器注入

①在Student类中添加有参构造

public Student(Integer id, String name, Integer age, String sex) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

②配置 bean
注意: constructor-arg 标签还有两个属性可以进一步描述构造器参数:
  • index属性:指定参数所在位置的索引(从0开始)
  • name属性:指定参数名

③测试

@org.junit.Test
    public void testHelloWorld(){
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        Student student = ac.getBean(Student.class);
        System.out.println(student);


    }

3.特殊值处理

①字面量赋值

什么是字面量? int a = 10; 声明一个变量 a ,初始化为 10 ,此时 a 就不代表字母 a 了,而是作为一个变量的名字。当我们引用 a 的时候,我们实际上拿到的值是 10 。 而如果 a 是带引号的: 'a' ,那么它现在不是一个变量,它就是代表 a 这个字母本身,这就是字面 量。所以字面量没有引申含义,就是我们看到的这个数据本身。

② null 值
注意:
以上写法,为 name 所赋的值是字符串 null
③ xml 实体
④ CDATA 节

4.为类类型属性赋值 ①创建班级类 Clazz
public class Clazz {
    private Integer clazzId;
    private String clazzName;

    public Integer getClazzId() {
        return clazzId;
    }

    public String getClazzName() {
        return clazzName;
    }

    public void setClazzId(Integer clazzId) {
        this.clazzId = clazzId;
    }

    public void setClazzName(String clazzName) {
        this.clazzName = clazzName;
    }

    @Override
    public String toString() {
        return "Clazz{" +
                "clazzId=" + clazzId +
                ", clazzName='" + clazzName + '\'' +
                '}';
    }
}

②修改 Student 类
public class Student {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
    private Clazz clazz;

    public Student() {
    }

    public Student(Integer id, String name, Integer age, String sex, Clazz clazz) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.clazz = clazz;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    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 String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Clazz getClazz() {
        return clazz;
    }

    public void setClazz(Clazz clazz) {
        this.clazz = clazz;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", clazz=" + clazz +
                '}';
    }
}

③方式一:引用外部已声明的 bean 配置Clazz类型的bean:
为Student中的clazz属性赋值:
错误演示:
如果错把 ref 属性写成了 value 属性,会抛出异常:                                                                                    Caused by: java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'com.atguigu.spring.bean.Clazz' for property 'clazz': no matching editors or conversion strategy found 意思是不能把 String 类型转换成我们要的 Clazz 类型,说明我们使用 value 属性时, Spring 只把这个属性看做一个普通的字符串,不会认为这是一个bean 的 id ,更不会根据它去找到 bean 来赋值
④方式二:内部 bean
  

③方式三:级联属性赋值

5.为数组类型属性赋值

①修改 Student 类 在 Student 类中添加以下代码:
private String[] hobbies;

public String[] getHobbies() {
return hobbies;
}
public void setHobbies(String[] hobbies) {
this.hobbies = hobbies;
}

public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", clazz=" + clazz +
                ", hobbies=" + Arrays.toString(hobbies) +
                '}';
    }
②配置 bean
  
     吃饭 睡觉 打豆豆

14天学习训练营导师课程: 郑为中《Vue和SpringBoot打造假日旅社管理系统》

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻名称:【SSM框架】依赖注入-创新互联
文章URL:http://pwwzsj.com/article/dioepd.html