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)
读后有收获,小礼物走一走,请作者喝咖啡。
Buy me a coffee. ☕Get red packets.
作者:楼兰胡杨
本文版权归作者和博客园共有,欢迎转载,但请注明原文链接,并保留此段声明,否则保留追究法律责任的权利。