我正在尝试将dwr包含在使用SpringMVC4.0.5的项目中。项目中使用基于Java的配置。对于基于java的配置,我在MVCConfiguration中使用以下代码行。
@Bean
public DwrController dwrController(){
Map<String,String> configParam = new HashMap<String, String>();
configParam.put("activeReverseAjaxEnabled","true");
DwrController dwrController = new DwrController();
dwrController.setDebug(true);
dwrController.setConfigParams(configParam);
/*
AnnotationsConfigurator annotationsConfigurator = new AnnotationsConfigurator();
annotationsConfigurator.configure();
dwrController.setConfigurators(configurators);
*/
List<Configurator> configurators = new ArrayList<Configurator>();
configurators.add(annotationsConfigurator);
return dwrController;
}
@Bean
public BeanNameUrlHandlerMapping beanNameUrlHandlerMapping(){
BeanNameUrlHandlerMapping beanNameUrlHandlerMapping = new BeanNameUrlHandlerMapping();
return beanNameUrlHandlerMapping;
}
@Bean
public DwrHandlerMapping dwrHandlerMapping(){
Map<String,String> urlMap = new HashMap<String, String>();
urlMap.put("/dwr/**/*","dwrController");
DwrHandlerMapping dwrHandlerMapping = new DwrHandlerMapping();
dwrHandlerMapping.setAlwaysUseFullPath(true);
dwrHandlerMapping.setUrlMap(urlMap);
return dwrHandlerMapping;
}
扩展类I的WebApplicationInitializer为dwr请求添加了映射。
ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(dispatcherContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/dwr/*");
dispatcher.addMapping("/");
但是在部署时,它显示错误,说明“应设置所需的‘配置器’属性”。如果配置需要任何修改,请建议如何设置配置器。
将 dwrController() 方法更改为 :
@Bean
@Autowired
public DwrController dwrController(BeanFactory beanFactory){
Map<String,String> configParam = new HashMap<String, String>();
configParam.put("activeReverseAjaxEnabled","true");
DwrController dwrController = new DwrController();
dwrController.setDebug(true);
dwrController.setConfigParams(configParam);
AnnotationsConfigurator annotationsConfigurator = new AnnotationsConfigurator();
SpringContainer springContainer = new SpringContainer();
springContainer.setBeanFactory(beanFactory);
annotationsConfigurator.configure(springContainer);
List<Configurator> configurators = new ArrayList<Configurator>();
configurators.add(annotationsConfigurator);
dwrController.setConfigurators(configurators);
return dwrController;
}
现在,应用程序正在部署,但用于/dwr/engine。js和它给出的其他请求错误<code>请求的资源不可用。
谢谢。
您已经创建了列表,但还没有实际设置它。添加以下一行:
dwrController.setConfigurators(configurators);
或者更好...在一行中完成所有操作
dwrController.setConfigurators(Arrays.asList(new AnnotationsConfigurator()));
我终于得到了工作配置。这是我的比喻类的代码
@Bean
public DwrController dwrController(ApplicationContext applicationContext){
BeanDefinitionRegistry beanDefinitionRegistry = (BeanDefinitionRegistry)applicationContext.getAutowireCapableBeanFactory();
Map<String,String> configParam = new HashMap<String, String>();
configParam.put("activeReverseAjaxEnabled","true");
ClassPathBeanDefinitionScanner scanner = new DwrClassPathBeanDefinitionScanner(beanDefinitionRegistry);
scanner.addIncludeFilter(new AnnotationTypeFilter(RemoteProxy.class));
scanner.addIncludeFilter(new AnnotationTypeFilter(DataTransferObject.class));
scanner.addIncludeFilter(new AnnotationTypeFilter(GlobalFilter.class));
scanner.scan("package.to.scan");
DwrController dwrController = new DwrController();
dwrController.setDebug(true);
dwrController.setConfigParams(configParam);
SpringConfigurator springConfigurator = new SpringConfigurator();
List<Configurator> configurators = new ArrayList<Configurator>();
configurators.add(springConfigurator);
dwrController.setConfigurators(configurators);
return dwrController;
}
@Bean
public BeanNameUrlHandlerMapping beanNameUrlHandlerMapping(){
BeanNameUrlHandlerMapping beanNameUrlHandlerMapping = new BeanNameUrlHandlerMapping();
return beanNameUrlHandlerMapping;
}
@Bean
public DwrHandlerMapping dwrHandlerMapping(DwrController dwrController){
Map<String,DwrController> urlMap = new HashMap<String, DwrController>();
urlMap.put("/dwr/**/*",dwrController);
DwrHandlerMapping dwrHandlerMapping = new DwrHandlerMapping();
dwrHandlerMapping.setAlwaysUseFullPath(true);
dwrHandlerMapping.setUrlMap(urlMap);
return dwrHandlerMapping;
}
在WebApplicationInitializer中添加了dispatcher映射,实现类为
dispatcher.addMapping("/dwr/*");
dispatcher.addMapping("/");
注意:DrowClassPathBeanDefitionScanner将跳过对@Controller、@Service、@Repository、@Component
的扫描,因此不要使用@RemoteProxy
以及这些Spring注释中的任何一个。
问题内容: 我尝试不使用任何xml。 像这样一个:转换为@Bean 问题在这里。 尝试将“ com.cloudlb.domain.User”转换为Class []无效。 错误:投放问题。 先感谢您。 问题答案:
问题内容: 是否可以在应用程序中同时具有MyBatis的基于XML +注释的配置。 我之所以这样问,是因为在我的应用程序中,我使用的是基于注释的方法。但是在一种情况下,我需要使用IN子句,可以使用 基于XML的配置。 但是,当我启动应用程序时,它似乎无法识别基于注释的映射器,并给了我一个例外。 因此,我想知道是否可以在应用程序中同时具有MyBatis的基于XML + Annotation的配置。请
Spring Data Elasticsearch repository可以通过XML配置,也可以通过JavaConfig的注解配置。 Example 35. Spring Data Elasticsearch repositories using JavaConfig(使用JavaConfig) @Configuration @EnableElasticsearchRepositories(ba
问题内容: 在最近我从事的一些大型项目中,选择其中一种(XML或注释)似乎变得越来越重要。随着项目的发展,一致性对于可维护性非常重要。 我的问题是:与基于注释的配置相比,基于XML的配置有哪些优势?与基于XML的配置相比,基于注释的配置有哪些优势? 问题答案: 注释有其用途,但它们不是杀死XML配置的灵丹妙药。我建议将两者混合! 例如,如果使用Spring,则将XML用于应用程序的依赖注入部分是完
当我使用Spring framework时,我经常看到2个术语基于Java和基于注释的配置/自动生成。 如果它们不一样,你能告诉我它们之间有什么不同吗?
我最近的目标是构建一个Spring Boot应用程序,但不需要任何XML配置文件(或尽可能少),因此我希望避免使用一些XML文件(即web.XML),特别是对于一些bean定义部分。 更难的部分来了。 我想使用@AutoWired注释将一个SessionFactory bean注入到类中,但每次尝试启动应用程序时,我都得到: unsatisfiedDependencyException:创建名为“