Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Springbean接口定义_Java_Spring - Fatal编程技术网

Java Springbean接口定义

Java Springbean接口定义,java,spring,Java,Spring,是否可以注册接口,并通过bean定义将接口实现附加到接口上? 我只想这样做: @Bean public MyInterface myInterface(){ return new MyInterfaceImpl(); } interface MyInterface{ } class MyInterfaceImpl implements MyInterface{ } 但是以这种方式使用BeanDefinitionRegistry: @Autowired ApplicationContext

是否可以注册接口,并通过bean定义将接口实现附加到接口上? 我只想这样做:

@Bean
public MyInterface myInterface(){
 return new MyInterfaceImpl();
}

interface MyInterface{
}
class MyInterfaceImpl implements MyInterface{
}
但是以这种方式使用BeanDefinitionRegistry:

@Autowired
ApplicationContext applicationContext;

public void register() {
BeanDefinitionRegistry registry = (BeanDefinitionRegistry) applicationContext.getAutowireCapableBeanFactory();
BeanDefinition myDefenition = BeanDefinitionBuilder
        .genericBeanDefinition(MyInterface.class)
        .setScope(BeanDefinition.SCOPE_SINGLETON)
        .getBeanDefinition();
registry.registerBeanDefinition("myInterface", myDefenition);
BeanDefinition myImplDefenition = BeanDefinitionBuilder
        .genericBeanDefinition(MyInterfaceImpl.class)
        .setScope(BeanDefinition.SCOPE_SINGLETON)
        .getBeanDefinition();
registry.registerBeanDefinition("myImpl", myImplDefenition);        
}
在这里,我想施展一些魔法

applicationContext.getBeansOfType(MyInterface.class)
返回
MyInterfaceImpl
bean

我浏览了文档,但没有找到类似的内容。
这是可能的还是我只是在浪费时间?

我在这里做了类似的事情:-只是使用工厂方法,而不是简单的类定义。移除整个工厂部件,并将其替换为一个简单的
setTargetClass(MyInterfaceImpl.class)应该可以工作。我在这里做过类似的事情:-只是使用工厂方法而不是简单的类定义。移除整个工厂部件,并将其替换为一个简单的
setTargetClass(MyInterfaceImpl.class)可能会起作用。