在我的Spring xmlconfiguration中,我试图让这样的工作: <beans> <import resource="${file.to.import}" /> <!– Other bean definitions –> </beans> 我想根据属性文件中的属性来决定要导入哪个文件。 我知道我可以使用System属性,但是我无法在启动时将属性添加到JVM。 注意:PropertyPlaceHolderConfigurer将不起作用。 在任何BeanFactoryPostProcessors运行之前,导入都被parsing。 导入元素只能parsingSystem.properties。 有没有人有一个简单的解决scheme呢? 我不想开始子类化框架类等… 谢谢
是否有可能有多个application.properties文件? ( 编辑 :请注意,这个问题演变为标题上的问题。) 我试图有2个文件。 第一个是应用程序Jar中的根文件夹。 第二个是在classpath中指定的目录。 2个文件都被命名为“application.properties”。 是否有可能“合并”这两个文件的内容? (和第二个的属性值覆盖第一个)或者,如果我有一个文件,那么其他文件被忽略? 更新1 :可以“合并”内容。 昨天好像第一个被忽略了,但是好像是因为那个东西被打破了。 现在它运作良好。 更新2 :它又回来了! 同样,只有两个文件中的一个正在被应用。 这很奇怪…它是在我使用Spring Tool Suite创build应用程序jar文件之后开始的。 而且Jar版本似乎总是忽略第二个(在classpath中),而在STS上运行的扩展版本的行为却不尽相同。 从哪里可以开始调查? 更新3 : Jar版本的行为其实是正确的。 这是java.exe的规范。 当指定-jar选项时,java.exe忽略-classpath选项和CLASSPATH环境variables,而类path将仅包含jar文件。 因此,classpath上的第二个application.properties文件将被忽略。 现在,我该如何让classpath上的第二个application.properties被加载? 更新4 : 我设法加载一个application.properties文件在外部path中使用-jar选项。 关键是PropertiesLauncher。 要使用PropertiesLauncher,必须像这样更改pom.xml文件: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!– added –> <layout>ZIP</layout> <!– to use PropertiesLaunchar –> </configuration> </plugin> </plugins> </build> 为此,我引用了下面的StackOverflow问题: spring启动属性启动器无法使用 […]
我有一个媒体实体,有一些用户上传的文件的基本字段。 为了保存上传文件的字节数,我想创build一个自定义的存储库来保存这个function。 按照Spring文档中的步骤,我创build了一个如下所示的接口: public interface MediaBytesRepository { public byte[] getBytes(Media media) throws IOException; public void saveBytes(Media media, byte[] bytes) throws IOException; public void appendBytes(Media media, byte[] bytes) throws IOException; public void deleteBytes(Media media) throws IOException; public boolean bytesExist(Media media) throws IOException; } 然后我提供了一个名为MediaBytesRepositoryImpl接口的实现 有了这个,我创build了以下界面: public interface MediaRepository extends JpaRepository<Media, Long>, MediaBytesRepository { } 现在,当我启动服务器时,我得到以下堆栈跟踪: SEVERE: […]
我刚刚将Spring 3.0.5迁移到3.1 GA。 我在初始化期间遇到了运行时错 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/spring/infrastructure-config.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchFieldError: NULL … Caused by: java.lang.NoSuchFieldError: NULL at org.springframework.expression.TypedValue.<clinit>(TypedValue.java:32) at org.springframework.expression.spel.support.StandardEvaluationContext.setRootObject(StandardEvaluationContext.java:85) at org.springframework.expression.spel.support.StandardEvaluationContext.<init>(StandardEvaluationContext.java:74) at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:124) at org.springframework.beans.factory.support.AbstractBeanFactory.evaluateBeanDefinitionString(AbstractBeanFactory.java:1299) at […]
我试图有2个提交button发布到窗体,每个button操作映射到不同的控制器。 这是我的映射 @RequestMapping(value="/save", method=RequestMethod.POST, params="save") @RequestMapping(value="/save", method=RequestMethod.POST, params="renew") 我的提交button看起来像这些 – <input type="submit" name="save" class="button" value="Save" /> <input type="submit" name="renew" class="button" value="Renew" /> 正如你可以从我的映射中看到的,我依靠使用params来区分哪个button被点击。 问题是,它的工作时间有90%,但有时我会得到下面的例外 – java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path 'http://localhost:8090/myapp/save': {public java.lang.String com.myapp.SaveController.save(MyEntity,javax.servlet.http.HttpSession), public java.lang.String com.myapp.SaveController.saveAndRenew(MyEntity,javax.servlet.http.HttpSession)} org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:248) org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:194) 奇怪的是,当发生这种情况,我重新提交页面,事后一切正常。 有没有更好的方法来实现我想要做的? 谢谢!
好吧,我是第500个用户问这个问题,我读了很多答案,但仍然没有运气。 父模块pom包含: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.framework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.framework.version}</version> </dependency> 子模块有maven-jetty-plugin ,我用jetty:run运行我的webapp模块jetty:run 。 web.xml定义了标准的调度程序模块: <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> 我有WEB-INF下的dispatcher-servlet.xml文件,但是启动失败: FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml] 哪里不对? 文档和大家都说Spring MVC会searchXX-servlet.xml,其中XX是servlet的名字。 为什么要searchapplicationContext.xml ?
在Pro Spring 3 Book中,第4章 – 介绍IOC和DI在Spring中 – 第59页,在“Setter Injection vs. Constructor Injection”一节中, 包含Spring,提供了一种机制来确保在使用Setter Injection时定义所有的依赖关系,但是通过使用Constructor Injection,可以以容器不可知的方式声明对依赖关系的要求“ 你能用例子来解释吗?
使用Spring MVC在应用程序启动时执行Java类的最佳方法是什么?
我已经对春季petclinic应用做了很多改变。 目前,当我在使用eclipse运行的tomcat服务器的新实例中启动应用程序时,出现以下错误消息…在服务器上运行: SEVERE: Exception loading sessions from persistent storage 然后服务器和应用程序随后能够成功启动,但我想解决任何导致错误信息。 任何人都可以告诉我如何通过这个错误信息? 堆栈跟踪没有列出应用程序中的任何文件,所以我不知道该在哪里查看应用程序代码来解决问题。 你可以看看github上的petclinic代码来查看应用程序的结构,如果这有助于你看到我应该看到的问题。 这是堆栈跟踪: INFO EhCacheManagerFactoryBean – Initializing EhCache CacheManager INFO ContextLoader – Root WebApplicationContext: initialization completed in 4376 ms Dec 16, 2013 2:51:56 PM org.apache.catalina.session.StandardManager doLoad SEVERE: IOException while loading persisted sessions: java.io.EOFException java.io.EOFException at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2280) at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2749) at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:779) at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279) at org.apache.catalina.util.CustomObjectInputStream.<init>(CustomObjectInputStream.java:58) […]
我正在阅读有关调度的Spring 3.0文档 。 我倾向于Spring的JobDetailBean Quartz。 不过,@ Scheduled注解吸引了我的眼球。 看来这是另一种使用Spring框架调度任务的方式。 基于文档,Spring提供了三种调度方式: @Scheduled 通过石英 通过JDK定时器 我对JDK Timer没有兴趣。 为什么我应该select@Scheduled over Quartz? (当我提到Quartz时,我的意思是使用Spring的bean封装来实现Quartz)。 假设我的用例足够复杂,我将与第三方Web服务通信以按指定的时间间隔导入和导出数据。