可以在 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)

Spring注解之@Autowired:Setter 方法上使用@Autowired注解的更多相关文章

  1. Spring源码学习之:@async 方法上添加该注解实现异步调用的原理

    在我们使用spring框架的过程中,在很多时候我们会使用@async注解来异步执行某一些方法,提高系统的执行效率.今天我们来探讨下 spring 是如何完成这个功能的.    spring 在扫描be ...

  2. Spring @async 方法上添加该注解实现异步调用的原理

    Spring @async 方法上添加该注解实现异步调用的原理 学习了:https://www.cnblogs.com/shangxiaofei/p/6211367.html 使用异步方法进行方法调用 ...

  3. @async 方法上添加该注解实现异步调用的原理

    在我们使用spring框架的过程中,在很多时候我们会使用@async注解来异步执行某一些方法,提高系统的执行效率.今天我们来探讨下 spring 是如何完成这个功能的. spring 在扫描bean的 ...

  4. spring构造函数注入、setter方法注入和接口注入

    Spring开发指南中所说的三种注入方式: Type1 接口注入 我们常常借助接口来将调用者与实现者分离.如: public class ClassA { private InterfaceB clz ...

  5. spring 构造方法注入和setter方法注入的XML表达

    1.构造方法注入 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC ...

  6. Spring、使用注解方式装配对象(@Resource、@Autowired)

    使用手工注解方式有两种方式@Resource.@Autowired 首先,引入注解所使用的Jar包  :common-annotations.jar 然后在beans.xml中加入命名空间空间 xml ...

  7. 18.3.2从Class上获取信息(注解)

    package d18_3_1; /** * Class类上所包含的注解 * * getAnnotation(Class annotationClass) 获取该元素上指定的类型的注解 * getAn ...

  8. spring aop获取目标对象的方法对象(包括方法上的注解)

    这两天在学习权限控制模块.以前看过传智播客黎活明老师的巴巴运动网视频教程,里面就讲到权限控制的解决方案,当时也只是看看视频,没有动手实践,虽说看过几遍,可是对于系统中的权限控制还是很迷茫,所以借着这次 ...

  9. SpringBoot之SpringSecurity权限注解在方法上进行权限认证多种方式

    前言 Spring Security支持方法级别的权限控制.在此机制上,我们可以在任意层的任意方法上加入权限注解,加入注解的方法将自动被Spring Security保护起来,仅仅允许特定的用户访问, ...

  10. 面试官:spring中定义bean的方法有哪些?我一口气说出了12种,把面试官整懵了。

    前言 在庞大的java体系中,spring有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜.我们都知道spring是创建和管理bean的工厂,它提供了多种定义bean的方式,能够满足我们日常工 ...

随机推荐

  1. C/C++ 创建Socket实现双工通信

    点击查看代码 实现简单的Socket通信 服务端代码(Server) #include <stdio.h> #include <winsock2.h> #pragma comm ...

  2. 考勤运行提示‘Length of values (115) does not match length of index (116) >>> ’

    源码 df['餐补'] = money_list 解决思路: 1.分别打印输出两个字段长度 本来以为是每个月的文件格式不一致导致有的文件好用有的文件不好用 经过耐心查看代码 前面的算法统计有一个本应该 ...

  3. pandas contains 函数

    Series.str.contains( pat, # 要查询的字符串.要查询的或者正则表达式 case=True, # 是否对大小写敏感 flags=0, # 用来传给正则模块的参数,比如 flag ...

  4. 在 JavaScript 中,判断一个对象是否为空有几种方法。

    使用 Object.keys() 方法检查对象的键值对数量: function isObjectEmpty(obj) { return Object.keys(obj).length === 0; } ...

  5. 【Ubuntu】Ubuntu 配置镜像源(ARM)

    [Ubuntu]Ubuntu 配置镜像源(ARM) 零.起因 最近在QEMU中安装了个ubuntu-24.04-live-server-arm64,默认是国外的软件源,很慢,故替换到国内. 壹.替换 ...

  6. ilruntime记录

    https://www.jianshu.com/p/e7283e1ed86a

  7. 探秘Transformer系列之(25)--- KV Cache优化之处理长文本序列

    探秘Transformer系列之(25)--- KV Cache优化之处理长文本序列 目录 探秘Transformer系列之(25)--- KV Cache优化之处理长文本序列 0x00 概述 0x0 ...

  8. Unbuntu16搭建Kafka环境总结

    1.安装Kafka 环境说明 OS:Ubuntu 16.04 Zookeeper:zookeeper 3.4.5 Kafka:kafka_2.11-0.11.0.0 jdk:jdk8(Kafka启动需 ...

  9. LinkedBlockingQueue的put方法底层源码

    一.LinkedBlockingQueue的put方法底层源码 LinkedBlockingQueue 的 put 方法是其核心方法之一,用于将元素插入队列.如果队列已满,调用 put 方法的线程会被 ...

  10. public void add(int index, E element)的方法源码分析

    public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess ...