当前位置: 首页 > 知识库问答 >
问题:

当使用“new”创建时,如何将原始值注入springbean

徐兴昌
2023-03-14

我有一个在运行时创建的业务类实例(使用“new”)。我想在这个实体中注入原始属性值。我不能使用@autowired,因为我不想注入beans,而是原始属性。我知道,由于这个类不是由Bean Factory本身初始化的,所以我需要某种技巧来注入值。所以我用AspectJ来了:http://docs . spring . io/spring/docs/3 . 0 . 0 . RC2/reference/html/ch07s 08 . html

但显然这似乎不适用于我的问题,因为状态是:[…]然后Spring将在配置后验证所有属性(不是原语或集合)是否已设置。[…]

我希望避免直接从spring上下文请求对象。这似乎违反了DI的思想。我的意思是,重点不是主动调用某个东西,而是被动地注入所有依赖项,对吗?

那么我该怎么做才能注入原语呢?

编辑:或者是因为在业务类中注入除了服务bean之外的依赖项并不常见?

共有3个答案

梁烨烨
2023-03-14

我不太明白,因为一旦你说不希望业务对象自动连接或使用getBean,它们就不再由spring容器管理了。

但是你使用AspectJ的想法很好。Spring和AspectJ可以一起工作,即AOP,但它们不必。我相信你可以编写一个构造函数切入点并得到你想要的。这个链接应该会有所帮助,我从来没有做过构造函数连接点,总是更喜欢注释,但它应该是一个起点。

松元明
2023-03-14

您可以使用application context . getbeanfactory()。resolveEmbeddedValue(“$ { my . property }”)

庞元青
2023-03-14

也许你应该看看@Configurationable注释:http://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/aop.html#aop-at可配置

然后注入一个值,使用@Value,例如:@ Value(" $ { some . property:default Value } ")

原始排除似乎不会影响@Value注释。“最好通过在字段或方法级别使用@Autowired或@Inject为您的@ Configurable beans指定显式的、注释驱动的依赖注入”,并且@Autowired和@Value由同一个beanpostprocessor处理(http://grep code . com/file/repository . spring source . com/org . spring framework/org . spring framework . beans/3 . 2 . 3/org/spring framework/beans/factory/annotation/autowiredannotationbeanpostprocessor . Java)

 类似资料:
  • 问题内容: 由于我是Spring Test MVC的新手,所以我不了解此问题。我从http://markchensblog.blogspot.in/search/label/Spring中获取了以下代码 变量不是从中注入的,它null在使用@Mock注释和获取资产错误时包含值。 我当前遇到的断言错误如下: 注意:如果我使用@Autowired代替@Mock它,则工作正常。 测试控制器类 控制器类

  • 我想创建自己的自定义注释,我使用的是Spring框架。 当有人注释他的POJO类时,后面的代码将触发方法。 例如@Sensetive(values=“accountNumber”)在下面的类上注释时 将调用一个方法,在记录值时,这些值将被屏蔽(例如accountNumber=“12345”- 我知道@ToString注释可以在调用toString方法时完全排除值,但是否有可能屏蔽它?

  • 问题内容: 我正在尝试实现一个小的脚本,以便通过命令行并使用适当的“ ftplib”模块在Python中使用FTP连接管理本地主机。我想为用户创建某种原始输入,但是已经设置了一些命令。 我尝试更好地解释: 一旦我已经创建FTP连接,登录连接成功通过用户名和密码完成后,我会表现出一种“bash shell的”与可能性的使用最有名的UNIX命令(例如和分别在目录中,并显示移动当前路径中的文件/文件夹)

  • 问题内容: 我的spring bean具有一个带有唯一强制性参数的构造函数,我设法用xml配置对其进行了初始化: 然后,我像这样使用此bean,并且效果很好。 但是我想用注释指定contructor arg值,例如 这可能吗 ? 提前致谢 问题答案: 首先,必须在bean定义中而不是在注入点中指定构造函数arg。然后,你可以利用spring的注释(spring 3.0) 就我所看到的问题而言,这可

  • 当我将文件加载到数据帧中时,每次创建一个新行时,我都希望获得行数: 使用这段代码,我得到了最大的行数,但我不知道如何在每次创建数据帧时得到数据帧中的行数。我想用它们来制作一个0-100%的进度条

  • 问题内容: 我有类似以下的表格(Django模型定义,并带有一个postgres数据库): 我使用Python脚本从CSV文件设置数据库。原始文件列出了具有整数id和整数“ person”字段的“所有者”,该字段映射到Person.id中的整数。 但是,鉴于Owner中的“ person”列希望使用Person对象,我该如何编写原始SQL字符串以将值插入Owner? 问题答案: 您没有说为什么需要

  • 问题内容: 我希望能够构造一个原始的HTTP请求并使用套接字发送它。显然,您希望我使用urllib和urllib2之类的东西,但我不想使用它。 它必须看起来像这样: 显然,您还必须请求页面/文件并获取和发布参数 问题答案: 您需要了解的大多数内容都在HTTP / 1.1规范中,如果您想推广自己的HTTP实现,则应该进行以下研究:http : //www.w3.org/Protocols/rfc26