Tag: spring

如何使用Spring MVC将会话属性作为方法参数(参数)传递

简而言之,我想要的是: public String action(@SessionAttribute User user) {..} 代替 public String action(HttpSession session) { User user = session.getAttribute(“user”); } 主要是为了: 可读性 unit testing

Spring Data + JPA具有多个数据源但只有一组存储库

我今天一直在研究这一组,我开始认为我想要做的事情可能是不可能的,所以我转向你,强大的Stackoverflow,寻求帮助。 我正在用Java构建RESTful服务平台,Spring Data 3.1.2 + JPA作为我的持久层(如此处所述 )。 我的数据模型对象都是作为扩展Spring JpaRepository接口的接口实现的。 我已经将所有内容连接起来并且使用单个数据源工作得很好,如本示例所示(请注意,显示的数据源是Derby,但这仅用于开发目的;在生产中,我们将使用Oracle): 问题是该应用程序需要连接到多个(Oracle)数据库。 每个传入请求中包含的凭据将包含一个字段,该字段告知应用程序要转到哪个数据库以满足该请求。 每个数据库的模式都是相同的,因此不需要为每个数据库提供单独的存储库接口。 经过相当数量的谷歌搜索,很明显这是一个常见的情况。 以机智: 使用Spring Data JPA的多个数据库 Spring + Hibernate + JPA +多个数据库 如何使用多个数据源设置spring数据jpa 这是一篇由(前?)Spring开发人员撰写的博客文章,它与手头的主题实际上并不相关,但有人在评论中提出了这个post,作者回复了一些信息: http://blog.springsource.org/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/#comment-198835 似乎正在出现的主题是解决此问题的方法是定义多个EntityManagerFactories,并将每个EntityManagerFactories连接到适当的存储库,如下所示: 但是,正如我所提到的,我希望在所有数据源中重用我的存储库,因此这种方法似乎不起作用。 我知道我的代码中没有任何方法可以从请求中获取相关的信息,并使用它来确定要使用的数据源(或EntityManagerFactory)。 我正在努力的部分是如何获取该数据源/ EntityManagerFactory的句柄并将其“注入”我的存储库对象。 有任何想法吗?

如何在Spring’HandlerMethodArgumentResolver’中多次读取请求体?

我正在尝试解决RequestMapping方法的某些参数,从请求体中提取值并validation它们并将它们注入到某些带注释的参数中。 @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { // 1, get corresponding input parameter from NativeWebRequest // 2, validate // 3, type convertion and assemble value to return return null; } 最大的问题是我发现HttpServletRequest (从NativeWebRequest获取)无法读取输入流(某些参数在请求体中) NativeWebRequest 。 那么我怎样才能多次检索Inputstream / Reader或请求体呢?

如何在运行时更改Spring的@Scheduled fixedDelay

我需要以固定的间隔运行批处理作业,并且能够在运行时更改此批处理作业的时间。 为此,我遇到了Spring框架下提供的@Scheduled注释。 但我不确定如何在运行时更改fixedDelay的值。 我做了一些谷歌搜索但没有找到任何有用的东西。

可以使用属性启用/禁用弹簧启动@RestController吗?

给出带有@RestController的“标准”spring引导应用程序,例如 @RestController @RequestMapping(value = “foo”, produces = “application/json;charset=UTF-8”) public class MyController { @RequestMapping(value = “bar”) public ResponseEntity bar( return new ResponseEntity(“Hello world”, HttpStatus.OK); } } 是否存在注释或技术,如果/除非某个应用程序属性存在/不存在,则会阻止端点启动。 注意:测试方法内的属性并爆炸不是解决方案,因为端点将存在。 我不关心粒度:即启用/禁用方法或整个类都很好。 由于配置文件不是属性,因此通过配置文件进行控制并不能解决我的问题。

如何使用Spring重新加载属性?

我在Spring 3中使用属性文件。当Spring初始化它的上下文时,它会加载属性文件并将其放在所有带有@Value注释的bean中。 我希望有可能更新文件中的某些属性,并在服务器上公开JMX,将新属性重新加载到Spring – 无需重新启动服务器,并重新加载其上下文。 我可以通过使用一些Spring方法重新加载属性并将它们填充到所有bean来实现这一点,还是应该由我自己编写这样的东西?

为什么我的Spring ContextRefreshed事件被调用了两次?

我注册了一个Spring ApplicationListener bean来监听ContextRefreshed事件。 但是出于一些奇怪的原因,我在完成上下文初始化时onApplicationEvent(ContextRefreshedEvent)方法进行两次调用。 这是正常行为还是表示我的配置有问题? 我正在使用Jetty 8作为我的Servlet容器。 我的相关web.xml配置如下 contextConfigLocation /WEB-INF/config/spring/spring-config.xml Spring org.springframework.web.servlet.DispatcherServlet contextConfigLocation 1 org.springframework.web.context.ContextLoaderListener Spring /service/* 谢谢!

为什么不支持SpringMVC Request方法’GET’?

我尝试@RequestMapping(value = “/test”, method = RequestMethod.POST)但是错误 代码是 @Controller public class HelloWordController { private Logger logger = LoggerFactory.getLogger(HelloWordController.class); @RequestMapping(value = “/test”, method = RequestMethod.POST) public String welcome() { logger.info(“Spring params is welcome”); return “/WEB-INF/jsp/welcome”; } } web.xml是 This is Spring MVC DispatcherServlet SpringMVC DispatchServlet org.springframework.web.servlet.DispatcherServlet SpringContext contextConfigLocation classpath*:springmvc.xml 1 SpringMVC DispatchServlet / 和springmvc.xml是 index.jsp是 <form action="/test” […]

尝试在“文件名”部分创建具有多个点的REST-ful URL – Spring 3.0 MVC

我正在使用带有注释驱动控制器的Spring MVC(3.0)。 我想为资源创建REST-ful URL,并且不能要求(但仍然可选地允许)URL末尾的文件扩展名(但如果没有扩展名则假设HTML内容类型)。 只要文件名部分没有点(句点/句号),这就可以与Spring MVC一起开箱即用。 但是,我的某些url需要名称中带有点的标识符。 像这样: http://company.com/widgets/123.456.789.500 在这种情况下,Spring会查找扩展名为.500的内容类型,并且找不到任何错误。 我可以使用解决方法,比如在最后添加.html ,编码标识符或添加尾部斜杠。 我对这些不满意,但可能会加入.html 。 我没有成功地寻找一种覆盖Spring中默认文件扩展名检测的方法。 是否可以为给定的控制器方法或URL模式等自定义或禁用文件扩展名检测?

Spring MVC自定义范围bean

我想创建自己的自定义范围bean,它将使用HTTP会话(一种Flash范围)。 根据Spring Manual我需要实现org.springframework.beans.factory.config.Scope接口 public class CustomScope implements Scope { @Override public Object get(String arg0, ObjectFactory arg1) { // TODO Auto-generated method stub return null; } @Override public String getConversationId() { // TODO Auto-generated method stub return null; } @Override public void registerDestructionCallback(String arg0, Runnable arg1) { // TODO Auto-generated method stub } @Override public Object […]