注释 Spring 视图类

Posted

技术标签:

【中文标题】注释 Spring 视图类【英文标题】:Annotating Spring view class 【发布时间】:2013-01-22 21:39:27 【问题描述】:

我有一个类扩展了 Spring 的 AbstractExcelView 类,它呈现一个 XML 文件。在这个类中,我正在注入我的 Service bean 以供使用。我正在自动装配和组件扫描我的类,我也想对这个视图类做同样的事情,但我不清楚如何(或者是否可以这样做)。这是我试图从配置中注释的内容:

<bean id="export.xls" class="com.my.views.ReportExcelView">
<property name="url">
    <value>/excel/template</value>
</property>
<property name="service" ref="testingService"/>

我可以用@Component 注释类,用@Autowired 注释服务,但我不知道注释URL 的策略。我真正想做的是在 buildExcelWorkbook() 调用中调整它(基于请求中的某些内容),但似乎在此之前完成了一些初始化,因为我在尝试使用我的 excel 模板时遇到错误表示它没有 Excel 工作表句柄的方法。有什么建议吗?

【问题讨论】:

【参考方案1】:

所以您的 ReportExcelView 现在可能看起来像这样。确保使用@Resource 连接一个简单的字符串。

package com.ex.springbasicex.view;
@Component
public class ReportExcelView
    @Resource(name="myUrl")
    String url;

    @Autowired
    Service service;

    public String getUrl() 
        return url;
    

    public void setUrl(String url) 
        this.url = url;
    

您的上下文配置可能应该类似于下面使用扫描的内容。下面是如何设置 myUrl String 资源。

<context:component-scan base-package="com.ex.springbasicex.view"  />
<bean id="myUrl" class="java.lang.String" >
    <constructor-arg>
        <value>/excel/template</value>
    </constructor-arg>
</bean>

【讨论】:

由于字符串 url 实际上在基类上,我只是用 @Resource 注释了 setUrl 并且它起作用了。

以上是关于注释 Spring 视图类的主要内容,如果未能解决你的问题,请参考以下文章

Spring 忽略 @Transactional 注释

Spring - 使用@Service和@Repository注释同一个类

使用 DirtiesContext 注释重新加载 Spring 应用程序不适用于嵌套类

我是不是需要使用 Kotlin Junit5 和 Spring Boot 将 Spring 注释复制到内部类?

Spring是否有一个注释来将类路径内容读取到String?

在 Spring Boot 测试类上使用 @WebMvcTest 注释时出错