我有以下问题。
对我来说,有必要让实现特定接口的类自动成为beans(就像@Component一样)。
例如,我有一个带有context:component-scan base-package="com.test"的com.test包,它有两个类。其中一个有注释@Component,但另一个只实现了特定的接口。
我需要一个具有此接口的类来成为一个bean,以及一个带有注释的类。
我该怎么做呢?
发布于 2017-12-14 00:54:58
您可以将注释@Component或@Service添加到您的类中,它将是bean,或者您可以将您的类作为@Bean添加到spring配置中
发布于 2017-12-14 01:01:46
有多种方法可以实现这一点
@Componenet、@Serivce、@Repository等在配置中定义Bean@ }
org.springframework.beans.factory.config.ConfigurableBeanFactory返回@Configuration @DependsOn("ContextProvider") //不确定是否需要此公共类BeanConfig实现BeanFactoryAware {私有BeanFactory beanFactory;@SuppressWarning({ "rawtypes“})私有空createBean()抛出异常{if(空== beanFactory){抛出新异常(”Couldnot load Bean Factory");} configurableBeanFactory ConfigurableBeanFactory = (ConfigurableBeanFactory) beanFactory;rawtypes实现);}}
如果一个接口有多个实现,请提供一个带有Bean或构造型注释的名称,并在自动连接时使用该名称。
发布于 2017-12-14 01:04:52
您可以使用反射来访问实现给定接口的所有类,然后手动将它们添加到上下文中,但请不要这样做。
只需添加@Component (如果有多个实现此接口的bean,则添加@限定符(“beanName”))
https://stackoverflow.com/questions/47798122
复制相似问题