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

使用注释按名称自动连接Springbean

姬阳曜
2023-03-14

在Springs的最新版本中,我们可以使用注释作为@Autowired自动连接bean。这将使用bean的类型(或构造函数,如果应用于它的话)自动连接bean。有什么方法可以使用基于bean名称的@Autowired注释吗?我们在Spring的XML文件中没有注释autowire=“byName”?

共有3个答案

孟彦
2023-03-14

如果您想定义将在DI容器中注册的bean的名称,可以在注释本身中传递该名称,例如@Service(“employeeManager”)。

然后使用下面的代码,您可以按名称启用autowire

@Autowired
@Qualifier("employeeManager")
private EmployeeManagerService employeeManagerService;
祁均
2023-03-14

您可以使用JSR-250@Resources进行命名bean自动连接,除非您需要构造函数注入或多参数方法注入。

从文档:

如果您打算通过名称表示注释驱动的注入,请不要主要使用@autowmed,即使在技术上能够通过@Qualifer值引用bean名称。相反,使用JSR-250@Resources注释,该注释在语义上定义为通过其唯一名称标识特定的目标组件,声明的类型与匹配过程无关。

呼延子安
2023-03-14

您可以使用:

@Autowired
@Qualifier("beanname")

根据@Qualifier javadoc

自动关联时,此注释可以在字段或参数上用作候选bean的限定符

 类似资料:
  • 我有一个关于Spring注释的问题。在我的(学习)项目中,我定义了两个类,另一个类有两个属性,每种类型一个。为了生成一个错误,我在XML中定义了两个相同类类型的beans,并且在setter方法中使用了@Autowired注释。大概是这样的: 在主类中,我获取此 Bean 的应用程序上下文的实例,并打印覆盖 toString 方法的属性的内容,这是一个简单的测试。我已经读到Spring自动连线注释

  • 问题内容: 当我尝试自动装配Spring RestTemplate时,出现以下错误: 在注释驱动的环境中使用Spring 4。 我的调度程序servlet的配置如下: 我尝试自动连接RestTemplate的类如下: 问题答案: 如果未定义错误,则会看到错误 考虑在配置中定义类型为“ org.springframework.web.client.RestTemplate”的bean。 要么 找不到

  • 我知道有可能通过名字得到一个类,使用 是否可以通过名称检索注释?我尝试了这个: 然后将c转换为

  • 和和注释之间有什么区别? 我们应该在什么时候使用它们每一个?

  • 我在应用程序中配置了Spring cloud sleuth(以及zipkin)。我有一个控制器,它调用服务,然后调用存储库,最后调用数据库。 设置工作正常,Sleuth正在生成spans id,它在zipkin中也可见。我想尝试跨多个内部bean和方法创建spans。我遇到了使用注释管理跨度。这似乎不起作用。 当我使用这里提到的任何注释时,如NewSpan或ContinueSpan,自动连接停止工

  • 我正在运行Spring Boot2.0.1和JUnit5。我正在尝试在集成测试中获取端口。但是,端口值始终为零。我不确定是什么引起的。我尝试将web环境枚举更改为随机端口,但似乎没有任何工作。 下面是pom(注意:仅显示依赖项) 应用程序.属性