Tag: spring

为什么Spring MVC需要至少两个上下文?

在Spring MVC中,有两种情况。 一个是由ContextLoaderListener启动的应用程序上下文或全局上下文。 它接受contextConfigLocation参数中提到的所有配置文件。 现在,如果您也使用Spring MVC,则需要Dispatcher servlet,它会启动另一个容器,也称为Web应用程序容器。 此容器将全局容器作为父容器。 将struts1与spring集成时,只有一个上下文。 为什么spring mvc需要两个? 使用spring mvc时是否可以只使用一个上下文? 谢谢!

制作spring-data-mongodb多租户

在最后一个八月sbzoom的post中提出了一个使spring-data-mongoDB多租户的解决方案: “你必须创建自己的RepositoryFactoryBean。这是Spring Data MongoDB参考文档中的示例。你仍然需要实现自己的MongoTemplate并延迟或删除ensureIndexes()调用。但是你必须重写几个类来确保调用你的MongoTemplate而不是Spring。“ 有没有人实现这个或类似的东西?

在使用Spring Data和Hibernate时,如何正确执行后台线程?

我正在构建一个使用Spring Data和Hibernate的简单Tomcat webapp。 有一个终点可以完成很多工作,因此我想将工作卸载到后台线程,以便在完成工作时Web请求不会挂起10分钟以上。 所以我在一个组件扫描包中写了一个新服务: @Service public class BackgroundJobService { @Autowired private ThreadPoolTaskExecutor threadPoolTaskExecutor; public void startJob(Runnable runnable) { threadPoolTaskExecutor.execute(runnable); } } 然后在Spring中配置ThreadPoolTaskExecutor : 这一切都很有效。 但问题来自Hibernate。 在我的runnable中,查询只有一半工作。 我可以: MyObject myObject = myObjectRepository.findOne() myObject.setSomething(“something”); myObjectRepository.save(myObject); 但如果我有延迟加载字段,它会失败: MyObject myObject = myObjectRepository.findOne() List lazies = myObject.getLazies(); for(Lazy lazy : lazies) { // Exception … } 我收到以下错误: org.hibernate.LazyInitializationException: failed […]

使用Spring控制器处理错误404

我使用@ExceptionHandler来处理我的Web应用程序抛出的exception,在我的情况下,我的应用程序返回带有HTTP status JSON响应,以便对客户端进行错误响应。 但是,我试图弄清楚如何处理error 404以返回类似的JSON响应,就像@ExceptionHandler处理的响应一样 更新: 我的意思是,当访问不存在的URL时

Spring Java Config vs Jboss 7

我试图在jboss上运行一个基于spring java的配置的简单应用程序,但没有成功。 这个应用程序在jetty和tomcat上都可以正常工作。 jboss日志看起来不错,因为它向我展示了一些成功的映射等,但我得到404试图访问该URL。 这是我的代码: 初始化 @Order(1) public class Initializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class[] getRootConfigClasses() { return new Class[] {RootConfig.class}; } @Override protected Class[] getServletConfigClasses() { return new Class[] {WebAppConfig.class}; } @Override protected String[] getServletMappings() { return new String[] {“/”}; } @Override protected void customizeRegistration(ServletRegistration.Dynamic registration) { registration.setInitParameter(“dispatchOptionsRequest”, “true”); } } RootConfig @Configuration […]

在spring-boot中过滤顺序

如何在spring-boot中指定filter的顺序? 我需要在Spring Securityfilter之后插入我的MDCfilter。 我几乎尝试了所有东西,但我的滤镜始终是第一个 这不起作用: @Bean @Order(Ordered.LOWEST_PRECEDENCE) public UserInsertingMdcFilter userInsertingMdcFilter() { return new UserInsertingMdcFilter(); } 这也不起作用: @Bean public FilterRegistrationBean userInsertingMdcFilterRegistrationBean() { FilterRegistrationBean registrationBean = new FilterRegistrationBean(); UserInsertingMdcFilter userFilter = new UserInsertingMdcFilter(); registrationBean.setFilter(userFilter); registrationBean.setOrder(Integer.MAX_VALUE); return registrationBean; }

Spring批处理作业从多个来源读取

如何从多个数据库中读取项目? 我已经知道可以从文件中获取。 以下示例适用于从多个文件中读取 … … … 像这样的三个豆子。

在Spring MVC中重定向

为什么我不能在Controller中使用它 @RequestMapping(method = RequestMethod.POST) public String onSubmit( Model model, @ModelAttribute(“form”) Form form, BindingResult result, HttpServletRequest request) throws IOException, WriteException, BiffException { if (result.hasErrors()) { return “redirect:index.html”; } } 我明白了: javax.servlet.ServletException:无法解析名为’dispatcher’的servlet中名为’redirect:index.html’的视图 org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1042) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) 我以前有这个工作。 为什么不是现在?

在将应用程序迁移到Spring Boot之后使用Spring Data Rest时,我发现使用@Id的实体属性不再编组为JSON

这个问题与这个SO问题有关( Spring引导@ResponseBody没有序列化实体id )。 我观察到,在将应用程序迁移到Spring Boot并使用spring-boot-starter-data-rest依赖项后,我的实体@Id字段不再在生成的JSON中进行编组。 这是我的请求映射,在调试时,我可以看到数据在返回之前没有被更改,因此@Id属性稍后被剥离。 @RequestMapping(method = RequestMethod.GET, produces = {“application/json”}) public PagedResources receipts(Pageable pageable, PagedResourcesAssembler assembler) { Page receipts = receiptRepository.findByStorerAndCreatedDateGreaterThanEqual(“003845”, createdStartDate, pageable); PagedResources pagedResources = assembler.toResource(receipts, receiptResourceAssembler); return pagedResources; } 是否有一个设置允许我在生成的JSON中保留@Id字段,因为我的应用程序允许用户按该值进行搜索。 谢谢 :)

在Spring Batch中使用多个DataSource

我试图在Spring Batch中配置几个数据源。 在启动时,Spring Batch抛出以下exception: To use the default BatchConfigurer the context must contain no more thanone DataSource, found 2 批量配置的代码段 @Configuration @EnableBatchProcessing public class BatchJobConfiguration { @Primary @Bean(name = “baseDatasource”) public DataSource dataSource() { // first datasource definition here } @Bean(name = “secondaryDataSource”) public DataSource dataSource2() { // second datasource definition here } … } […]