Spring注解之@Autowired:Setter 方法上使用@Autowired注解

       可以在 JavaBean中的 setter 方法中使用 @Autowired 注解。当 Spring遇到一个在 setter 方法中使用的 @Autowired 注解时,它会在方法中按照类型自动装配参数值。创建测试类User,并且添加属性student,

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.io.Serializable;

/**
 * @author Wiener
 */
@Component
public class User implements Serializable {
    private static final long serialVersionUID = 6089103683553156328L;
    private Long id;
    private Student student;

    public Student getStudent() {
        return student;
    }

    @Autowired
    public void setStudent(Student student) {
        this.student = student;
    }

    public void isStu() {
        student.studentStudy();
        System.out.println("------ 装配Bean成功 ---------");
    }
}

       下面创建依赖的类文件 Student.java,切莫忘记在类文件上添加注解 @Component:

import lombok.Getter;
import lombok.Setter;
import org.springframework.stereotype.Component;

import java.io.Serializable;
import java.util.Date;

/**
 * @author Wiener
 */
@Getter
@Setter
@Component
public class Student implements Serializable {

    private static final long serialVersionUID = -5246589941647210011L;

    //姓名
    private String name;
  
    public Student() {
        System.out.println("A default student constructor." );
    }
    public void studentStudy() {
        System.out.println("A student is studying." );
    }
}

       修改Spring Boot启动类,通过Spring容器拿到Bean实例user:

import com.east7.bean.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

/**
 * @author Wiener
 */
@SpringBootApplication
public class East7Application {

    public static void main(String[] args) {
       ApplicationContext act = SpringApplication.run(East7Application.class, args);
       User user = (User) act.getBean("user");
       user.isStu();
    }

}

启动应用程序,控制台将会输出以下消息:

A default student constructor.
A student is studying.
------ 装配Bean成功 ---------

说明student属性被装配成功。如果setStudent方法不加注解,程序运行时,会抛出如下异常:

Exception in thread "main" java.lang.NullPointerException
    at com.east7.bean.User.isStu(User.java:28)
    at com.east7.East7Application.main(East7Application.java:25)

 

posted @ 2020-07-11 14:44  楼兰胡杨  阅读(4425)  评论(0编辑  收藏  举报