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

使用泛型的Spring配置Bean注入

许招
2023-03-14
Interface A<T1,T2>{

public T1 getSome(T2 input);

}
Class B implements A<C,D>{

@Override
public D getSome(C input){

  // Do something
  return D;
}}
@Configuration
public Class BConfig{

@Bean
public A b(){
  return new b();
}}
@Configuration
Class AppConfig(){

@Inject
private A b

public App app(){
  return new App(b);
}}
public Class App{
  A b;
  public App(A b){
    this.b=b;}
  public void doSome(){
    C c=new C();
    D d=b.getSome(c);
  }
}
A<C,D> b; 

A b;

因为bean注入将注入A的实现,在spring配置中是B。我不想指定泛型类型,因为这会稍微违背使用泛型的目的。

共有1个答案

齐昊
2023-03-14

Spring autowires bean按类型、限定符和名称。

这取决于你想如何使用它们。如果您定义它们时没有泛型,您将使用java.lang.Object,这意味着当您需要在某些类中使用这些逻辑时,您将强制转换为某些类型

使用泛型就不会有这样的问题。

@Configuration
public class BConfig{

 @Bean
 public A<C,D> b(){
  return new B();
 }
}

@Component 
public class E {
 @Autowired
 private A<C,D> b; 
}
 类似资料:
  • spring日志中的info消息显示: 示例: 下面有一个简单的示例,可以使用。这里,Bar是嵌套在Foo内部的,我需要模拟Bar进行测试: 现在对于测试来说,假设我想注入一个mockbar而不是真正的bar。我如何在下面的测试类中实现这一点? 实际测试用例:

  • 问题内容: 我有一堆Spring bean,它们是通过注释从类路径中拾取的,例如 我想将app.properites的属性之一注入到上面显示的bean中。我不能简单地做这样的事情 因为PersonDaoImpl在Spring XML文件中没有功能(它是通过注释从类路径中拾取的)。我有以下内容: 但是我不清楚我如何从中访问我感兴趣的财产? 问题答案: 你可以在Spring 3中使用EL支持进行此操作

  • 结果是- 属性BeanA和BeanB只是字符串值,那么如何指定bean名称呢?

  • 本文向大家介绍Spring @Bean注解配置及使用方法解析,包括了Spring @Bean注解配置及使用方法解析的使用技巧和注意事项,需要的朋友参考一下 使用说明 这个注解主要用在方法上,声明当前方法体中包含了最终产生 bean 实例的逻辑,方法的返回值是一个 Bean。这个 bean 会被 Spring 加入到容器中进行管理,默认情况下 bean 的命名就是使用了 bean 注解的方法名。@B

  • 问题内容: 我有一堆Spring bean,它们是通过注释从类路径中拾取的,例如 在Spring XML文件中,定义了一个PropertyPlaceholderConfigurer: 我想将app.properites的属性之一注入到上面显示的bean中。我不能简单地做这样的事情 因为PersonDaoImpl在Spring XML文件中没有功能(它是通过注释从类路径中拾取的)。我有以下内容: 但

  • 我想:1。initbean工厂(如果找不到值,则可能为null)2。自动连接并由bean绑定使用 但现在我有个例外 所以我想要的是在装订中使用工厂,如何制作?谢谢