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)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM