栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Spring】set注入(掌握)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Spring】set注入(掌握)

set注入,也叫做设值注入。

概念: spring调用类中的set方法,在set方法中可以完成属性赋值。 推荐使用。

创建spring配置文件

Alt insert ---->xml 

对应包的spring配置文件:

String config = "bao1/applicationContext.xml";
ApplicationContext ctx = new ClassPathXmlApplicationContext(config);


applicationContext.xml



Student.java

public class Student {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

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

MyTest.java

@Test
public void test01(){
      String config = "bao1/applicationContext.xml";
      ApplicationContext ctx = new ClassPathXmlApplicationContext(config);
      Student student = (Student) ctx.getBean("mystudent");
      System.out.println("Studen:" + student);
}

此时没有给属性赋值:

DI:给属性赋值 简单类型: java中的基本数据类型和String

简单类型的set注入: spring调用类的set()方法,通过set()方法完成属性赋值

语法:
 
	
    ...
 

applicationContext.xml


      
       

执行test01

在set方法中添加输出语句:

public class Student {
    private String name;
    private int age;

    public void setName(String name) {
        System.out.println("setName=="+name);
        this.name = name;
    }

    public void setAge(int age) {
        System.out.println("setAge=="+age);
        this.age = age;
    }

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


添加一个无参构造:

public class Student {
    private String name;
    private int age;

    public Student() {
        System.out.println("Student的无参数构造方法");
    }
    
    public void setName(String name) {
        System.out.println("setName=="+name);
        this.name = name;
    }

    public void setAge(int age) {
        System.out.println("setAge=="+age);
        this.age = age;
    }

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


若将set方法去掉则会报错:

set()方法里面是由自己实现的:

添加一个setEmail()方法:



给属性赋值看的是set方法,与属性名无关,与有没有属性无关,看的只是set方法,有set就是正确的

给非自定义类属性赋值

引用类型set注入

语法:


	 
	...


Student.java

public class Student {
    private String name;
    private int age;

    //引用类型
    private School school;

    public Student() {
        System.out.println("Student的无参数构造方法");
    }

    public void setName(String name) {
        System.out.println("setName=="+name);
        this.name = "Hello" + name;
    }
    
    public void setAge(int age) {
        System.out.println("setAge=="+age);
        this.age = age;
    }

    public void setSchool(School school) {
        System.out.println("setSchool==" + school);
        this.school = school;
    }

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

School.java

public class School {
    private String name;
    private String address;

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

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "School{" +
                "name='" + name + ''' +
                ", address='" + address + ''' +
                '}';
    }
}


用spring体现一下:

School声明在student前后的顺序无所谓(id和ref区分大小写)

    
        
         

        
        

    
    

    
        
        
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/434201.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号