我有一个关于Spring应用上下文的设置如下:
@Configuration
public class RmiContext {
@Bean
public RmiProxyFactoryBean service() {
RmiProxyFactoryBean rmiProxy = new RmiProxyFactoryBean();
rmiProxy.setServiceUrl("rmi://127.0.1.1:1099/Service");
rmiProxy.setServiceInterface(Service.class);
return rmiProxy;
}
}
@Configuration
public class LocalContext {
@Bean
public Controller Controller() {
return new ControllerImpl();
}
}
@Configuration
@Import({RmiContext.class, LocalContext.class})
public class MainContext {
上述设置可以正常工作,但我想启用@ComponentScan
注释@Component
的Controller
,因为我的应用程序中有许多Controller
,如果使用@Bean
一个个声明就很繁琐。
@Configuration
@ComponentScan(basePackageClasses = {Controller.class})
public class LocalContext {
/* ... */
}
The problem is that when I do @ComponentScan(basePackageClasses = {Controller.class})
, the previously fine working RmiProxyFactoryBean
are not recognized or can't be created.
那么,我该如何配置我的MainContext
,以便通过RMI和本地bean创建两个bean?
@ComponentScan
扫描其他使用@Component
注释的bean时,通过RMI(即服务)传递的bean无法被识别(即找不到类型为“Service”的bean),会抛出异常。 - TheKojuEffect