Spring @Autowired 用于 setter 方法与非 setter 方法

2024-04-25

根据@Autowired javadoc https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Autowired.html:

将构造函数、字段、setter 方法或配置方法标记为自动装配 通过 Spring 的依赖注入工具。只有一个构造函数(位于 任何给定 bean 类的 max) 都可以带有此注释,指示 用作 Spring bean 时自动装配的构造函数。这样的构造函数 不一定要公开。字段在之后立即注入 在调用任何配置方法之前构建 bean。这样一个 配置字段不必是公共的。配置方法可能有一个 任意名称和任意数量的参数;这些论点中的每一个 将自动装配 Spring 容器中的匹配 bean。

Bean 属性设置方法实际上只是此类的一个特例 通用配置方法。此类配置方法不必是公共的。 在多参数方法的情况下,“必需”参数是 适用于所有参数。如果是集合或地图 依赖类型,容器将自动装配所有匹配的bean 声明值类型。对于 Map,键必须声明为 类型 String 并将被解析为相应的 bean 名称。笔记 实际的注入是通过 BeanPostProcessor 执行的 反过来意味着你不能使用@Autowired将引用注入到 BeanPostProcessor 或 BeanFactoryPostProcessor 类型。请咨询 AutowiredAnnotationBeanPostProcessor 类的 javadoc(其中, 默认情况下,检查此注释是否存在)。

我的问题是:

  1. 是什么意思配置方法?

  2. 另外,假设我有一个 setter 方法@Autowired和一些任意方法@Autowired。我假设 setter 方法是在 bean 实例化后由 spring 自动调用的,而随机命名的@Autowired方法不会被调用,对吗?

  3. Spring 如何理解哪个@Autowired方法应该在实例化(setter)之后调用,而其他方法则不应该?这与 javadoc 的声明有何关联,该声明表示:

Bean 属性设置方法实际上只是一个特例 这样一个通用的配置方法

最后一个问题:我可以在哪里阅读相关内容?因为 spring 文档没有任何相关信息,而且我无法在其 javadoc 中找到 spring 使用的确切逻辑。


@Autowired注解可以与构造函数、setter 方法或任何其他方法一起使用。 每当春天发现@Autowired注解它将尝试找到与方法参数匹配的 bean 并调用该方法。如果有多个方法(setter 或 non-setter)@Autowired注解,所有这些都会在bean实例化后由Spring调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring @Autowired 用于 setter 方法与非 setter 方法 的相关文章

  • Java 中修剪字符串的可能前缀

    I have String str 我想从中提取不包括可能的前缀的子字符串 abc 我想到的第一个解决方案是 if str startsWith abc return str substring abc length return str
  • emacs 的最佳 java 工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Spring Batch - 读取多行日志消息

    我面临一个问题 在配置了 Spring 集成的 Spring Batch 应用程序中将多行日志消息读取为单个消息 该应用程序必须将多行日志消息 示例异常堆栈跟踪 读取为单个消息 稍后它必须处理并对消息进行分类以进一步建立索引 每行都由其时间
  • Java俄罗斯方块旋转

    我知道这个问题已经被问了很多 但我想知道如何旋转俄罗斯方块 我已经做了一个又长又糟糕的解决方案 大约 170 行代码 但应该有更简单的方法来做到这一点 我的俄罗斯方块由 4 个块组成 它们都知道它们在矩阵中的位置 行和列 Matrix本身是
  • Selenium 2:中断页面加载

    我在使用 FirefoxDriver 使用 Selenium 2 0b3 Java API 单击按钮时遇到问题 单击该按钮会将表单发送到网络服务器 然后浏览器会因表单提交而进入新页面 当使用 element click 单击某个元素时 se
  • 在 JSON 转换为 CSV 期间保持 JSON 键的顺序

    我正在使用此处提供的 JSON 库http www json org java index html http www json org java index html为了将 json 字符串转换为 CSV 但我遇到的问题是 转换后键的顺序
  • 将十六进制字节数组解码为特定代码页在随后编码时会产生错误结果

    我创建了一个简单的应用程序 如下所示 String stringValue new String new byte 0x00 0x00 0x00 0x25 273 byte valueEncoded Arrays copyOfRange s
  • 在 Android 谷歌地图中绘制 4K 折线

    我现在正在开发一个适用于 Android 设备的应用程序 主要功能是在地图上绘制折线以显示城市中每条街道的交通情况 不幸的是 当我绘制大约 3K 折线时 数量会根据屏幕尺寸和缩放级别而减少 我的地图变得非常慢 我没有提及绘制所有线条的时间
  • 带有 Spock Stub 的泛型

    我无法为泛型类编译 Spock 存根 构造函数的签名如下 SomeClass SerSup
  • Java TreeMap时间复杂度-lowerKey

    时间复杂度是多少lowerKey Java实现中的操作TreeMap 我认为它是 log n 但我在文档中找不到它 更基本操作的复杂性已有详细记录 此实现提供了有保证的 log n 时间成本 containsKey 获取 放置和删除操作 顺
  • 函数 isAssignableFrom 在服务器启动期间返回 false

    实施oauth2系统 我在使用以下代码时遇到一些问题 import org springframework security oauth2 provider endpoint FrameworkEndpointHandlerMapping
  • 使用java服务中的Zxing库从单个图像文件中读取多个条形码

    您好 我已经创建了一个java服务 用于从此处的图像中读取条形码 我使用Zxing库来解码此处的文本 挑战是 如果一个带有单个条形码的文件工作正常 如果有多个条形码 它会产生不相关的结果 我在下面给出了我的代码 pom xml
  • 如何在 Selenium 中定位具有特定文本的跨度? (使用Java)

    我在使用 java 查找 Selenium 中的 span 元素时遇到问题 HTML 看起来像 div class settings padding span Settings span div 我尝试了以下方法但没有成功 By xpath
  • int 到 long 赋值

    我一直在尝试这个 int 和 long 转换 我尝试分配一个int变量为along多变的 代码如下 public static void main String args int i 1024 long j i long k i i i i
  • Spring JPA (Hibernate) Entity Manager 何时将连接返回到连接池?

    在我的 java 进程中 我使用以下 spring 配置连接到 MySql Configuration EnableTransactionManagement PropertySources PropertySource classpath
  • java中类的命名约定 - 全部大写

    在 Java 中 当类全部大写时 如何命名它 例如 如果我想创建一个班级来选择某些人成为 VIP 我应该将类命名为 VIPSelector 还是 VipSelector Thanks 你的两个选择都有效 类的主要目标是让它们以大写字母开头
  • Spring Boot MultipartFile上传getOriginalFileName根据浏览器不同而不同

    我使用的是 spring boot 1 5 7 RELEASE 版本 我使用以下方法上传文件 Autowired private MyService mySerice RequestMapping value uploadFile meth
  • 如何使用 Java 11 和 JavaFX 11 运行 ControlsFX 示例应用程序

    ControlFX 网站 http fxexperience com controlsfx says 如果您想使用 ControlsFX 示例应用程序 只需 下载 ControlsFX 版本并在上运行以下命令 命令提示符 请务必将 替换为实
  • 如何为Spring测试创建TestContext?

    我有一个相对较小的 Java 库 它实现了几十个 bean 没有数据库或 GUI 我创建了一个 Spring Bean 配置文件 其他 Java 项目使用该文件将我的 bean 注入到他们的东西中 我现在第一次尝试使用 Spring Tes
  • 从 Web 服务器异步调用应用程序

    我有一个用 Spring 制作的 在 Tomcat 上运行的 Web 应用程序 在同一台机器上有一个普通的 Java 应用程序 我想通过从Web服务器调用Java应用程序来执行它 但我想让应用程序不会使用服务器的资源 它涉及分类器的训练 因

随机推荐

  • 同时使用 POST 和 GET 的 HttpWebRequest

    我需要将用户重定向到http www someurl com id 2 http www someurl com id 2使用 POST 方法 是否可以 如果是 那么如何 现在我有以下内容 它正确转发 POST 数据 但它删除了 id 2
  • 如何在级联下拉列表中显示选定的值?

    我想要为编辑视图中的选定值扩展以下代码 以国家 gt 州 gt 城市为例 我有脚本 Cascading DropDown List js function bindDropDownList e targetDropDownList var
  • 如何在Windows服务程序中捕获SERVICE_CONTROL_SHUTDOWN代码

    我最近正在编写一个Windows服务程序 我在编程时遇到的问题是 当我在 Windows 操作系统上安装程序时 它无法正常关闭 关闭系统需要很长时间 看来我的程序是问题的原因 我试图在互联网上找到解决方案 我发现在我的代码中添加 SERVI
  • FF 和 IE 不从 CSS 加载 img src

    我正在使用这样的 css 设置图像的 src Banner content url Banners prussia awesomeness gif width 1000px 这是我的图片 div class Header img src a
  • 视频无法以全屏模式播放

    当我尝试在全屏浏览中播放嵌入视频时 出现 NPE 它在 3 0 蜂窝中运行良好 但在 ICS 4 0 中运行不佳 知道如何解决这个问题吗 java lang NullPointerException at android webkit Pl
  • php codeigniter 中的 concat

    请帮助我理解正确的连接语法 我有一个名为存货其中有 trans id trans items items gt item id trans user employees gt person id trans date trans comme
  • boost::mpi 和 boost:serialization with std::variant

    c 17引入了新类型std variant 是否可以定义一个序列化例程 以便使用std variant和这个结合boost mpi 例如 考虑一个简单的程序 include
  • 如何从网址下载所有文件?

    我想从 URL 获取所有文件 文件可能有不同类型的扩展名 如何从网站 URL 获取带有 webclient 对象的所有文件 当我打开网站网址时 文件列出如下格式 框架 js 我的文件 png Class1 cs 来自 Web URL 的文件
  • iOS 将 URL 中的音频分成帧

    我正在 iOS 上开发一个简单的网络广播应用程序 具有非常简单的语音 音乐识别功能 主要思想是一个收音机 它播放来自 url 的信号 同时检查正在广播的信号类型 当它检测到语音时 它会改变频道等等 我使用 Storyboards 和 AVF
  • PHP 上的多个 TCP 套接字请求

    是否可以使用 PHP 上的套接字服务器接受多个请求 并行 如果可以的话 怎样做 普通的 PHP 脚本无法接收多个请求 但如果你真的计划创建一个套接字服务器 作为 cmdline php 脚本启动 那么是的 这是可能的 调查http pear
  • 使用 Json.Net 自定义 DateTime 序列化

    我尝试创建自定义日期时间转换器失败 问题 我有许多对象要序列化 其中一些包含 DateTime 的属性 其中包含 DateTime MinValue 我想将其序列化为空 但是我发现的所有解决方案都要求装饰对象内部的正确位置 我做不到 我在下
  • Linq“等于”关键字

    LINQ 中的 equals 关键字是否会检查左侧和右侧的对象是否指向同一对象 记忆或检查其内容 它比较了values 另请参阅Linq 连接中 和 equals 有什么区别 https stackoverflow com question
  • RuntimeError:使用 docker 关闭连接后无法重用套接字

    我正在关注本教程 https github com getamis eth indexer blob master README md fbclid IwAR3g3SAjJ9ik hHCFkol2k8YXo0GvBL15oSNC hIU38
  • ListView:通过鼠标拖动多选项目

    In ListView I can press Ctrl Shift and click on the item to select But I want to drag the mouse to select the items like
  • 在 Angular 2 子模块中强制服务实例化(AngularJS 运行块的替代方案)

    我在子模块中有一个服务 它包装了一些第三方模块 实例化并初始化其服务以准备在应用程序中使用 Injectable class SubmoduleInitializerService constructor thirdPartyService
  • 如何使用 Linq to SQL 查找行的 ROW_NUMBER()

    Linq to SQL 利用ROW NUMBER 用于分页目的 即当您使用 Skip 和 Take 时 但是 我似乎找不到实际访问的方法ROW NUMBER 在查询中评估我自己 我需要在查询中找到记录的 ROW NUMBER 无需带回所有记
  • 如何编写具有 cout 样式接口的记录器类 (logger << "Error: " << val << endl;)

    我想创建一个记录器类 具有如下功能 Logger log log lt lt Error lt lt value lt lt seen lt lt endl 这应该打印一条自定义格式的消息 例如 2009 年 9 月 12 日 11 22
  • Dialogflow @sys.email 实体无法识别电子邮件

    在我的意图中 我希望用户提供他 她的电子邮件地址 我尝试使用 sys email实体从训练短语中识别电子邮件 但它不识别电子邮件地址 可能是什么问题 当我在网上搜索时 我看到一些谷歌群组中有人提出类似的问题 但找不到答案 EDIT 这是意图
  • 使用 AngularJS 选择的占位符

    我无法通过 select 得到占位符的想法 下面的第一个条目仍然是空白
  • Spring @Autowired 用于 setter 方法与非 setter 方法

    根据 Autowired javadoc https docs spring io spring docs current javadoc api org springframework beans factory annotation A