java - 如何注入 Set在 Setter 注入中使用基于注释的配置?
问题描述
我正在做一个简单的 Spring Core 项目。正如我们所知,要使用 Spring Core,我们需要向 IoC 容器提供一些配置元数据,并且配置元数据可以以 3 种形式提供。来源在这里
- 基于 XML 的配置
- 基于 Java 的配置
- 基于注解的配置
让我们考虑一个例子。我有一堂课Team
。
package com.altafjava.bean;
public class Team {
private String teamName;
private Set<String> players;
public void setTeamName(String teamName) {
this.teamName = teamName;
}
public void setPlayers(Set<String> players) {
this.players = players;
}
}
正如我们所见,它有 2 个属性,我们想通过使用Setter Injection
. 我们可以通过使用XML-based configuration
as 来做到这一点:
<bean id="team" class="com.altafjava.bean.Team">
<property name="teamName" value="Avengers" />
<property name="players">
<set>
<value>Iron Man</value>
<value>Captain America</value>
<value>Thor</value>
<value>Hulk</value>
<value>Thor</value>
</set>
</property>
</bean>
我们也可以使用Java-based configuration
as 来做到这一点:
@Configuration
public class AppConfig {
@Bean
public Team team() {
Team team = new Team();
team.setTeamName("Football Players");
Set<String> players = new HashSet<>();
players.add("Ronaldo");
players.add("Messi");
players.add("Salah");
players.add("Messi");
team.setPlayers(players);
return team;
}
}
现在的问题是我们如何通过使用来做到这一点Annotation-based configuration
?
在基于注解的配置中,我们通常使用原型注解,如@Component
, @Service
, @Controller
, @Repository
。
解决方案
不可能,因为注释不能包含任何类型值。
推荐阅读
- python - 无法安装`gattlib`
- android - 自定义标记在 mapbox-android 中不可见
- c - 由于 libffi 中未定义的引用,构建 Glib 时出错
- hadoop - 无法从 Hive 外部表上的 Druid 数据源查询数据
- r - 根据自定义标识符对数据框中的行进行排序
- java - 在java9中将发布者流到字符串
- linux - 下载并安装(Jetbrains 产品) IntellijIdea-webStorm-phpStorm idea 32 位 Linux tar.gz
- python - 基于 Django 类的视图中的密码格式无效或未知散列算法
- xamarin.forms - 适合标签页 xamarin 表单上的标题文本?
- .net - 添加消费者时的 MassTransit