- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的情况与“Inject a file resource into Spring bean”非常相似
我有一个使用一些 .jasper 编译文件的 Controller ,我这样声明它们
//...
@Controller
public class InvoicingController {
private Resource quoteTemplate;
...//
在我的上下文配置文件中
<bean id="invoicingController" class="x.x.InvoicingController">
<property name="quoteTemplate" value="/WEB-INF/jasper/Quote.jasper" />
...
我在 setQuoteTemplate()
函数上设置了一个断点,当我初始化容器时,它被调用,并且 Resource
对象被正确设置。然而,当我实际点击 Controller 时 quoteTemplate
为空。
我认为 Controller 是单例,除非我的理解存在差距,否则我不确定为什么当我点击 Controller 处理的 url 时,容器初始化期间设置的值会变为空。
编辑:
谢谢@Sotirios Delimanolis
我最终这样声明了 Bean:
<bean id="quoteFile" class="java.io.File">
<constructor-arg value="resources/jasper/Quote.jasper" />
</bean>
<bean id="quoteTemplate" class="org.springframework.core.io.FileSystemResource">
<constructor-arg ref="quoteFile" />
</bean>
然后@Autowire
构建依赖项
@Autowired @Qualifier("quoteTemplate") private Resource quoteTemplate;
使用
@Qualifier
是因为我有多个声明为 beans 的 Resource
实现类,这可以确保使用正确的类。
最佳答案
您不能同时使用 @Controller
注释和 <bean>
声明,除非您没有 component-scan
。您最终将得到两个 bean 定义,其中最后一个将覆盖第一个。
在这种情况下,组件扫描的 bean 定义似乎排在第二位,并覆盖您使用 <bean>
创建的 bean。 .
选择您要使用的 bean 声明方法。
关于java - Spring Controller 注入(inject)的属性变空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19547621/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!