【发布时间】:2014-10-16 02:17:50
【问题描述】:
<bean
name="ticketValidationFilter"
class="org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter"
p:service="https://my.local.service.com/cas-client">
<property name="ticketValidator">
<bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
<constructor-arg index="0" value="https://localhost:8443/cas" />
</bean>
</property>
</bean>
谁能帮忙把这个xml定义转换成java配置?具体来说,我对如何声明ticketValidator 感到困惑。
@Bean
FilterRegistrationBean ticketValidationFilter(){
Filter ticketValidationFilter = new
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter();
FilterRegistrationBean frb = new FilterRegistrationBean();
frb.addUrlPatterns("/*");
frb.setFilter(ticketValidationFilter);
// ticket Validator somewhere here
Map<String, String> initParamMap = new HashMap<String, String>();
initParamMap.put("service", "http://localhost:8889/cas-client");
frb.setInitParameters(initParamMap);
return frb;
}
-----过滤器配置更新-------
如果您使用嵌套 bean 进行过滤器配置(例如在我的情况下),您在过滤器上设置的任何属性 - 如果您仅使用 setter,它们将为空(不知道为什么,如果有人急于解释请做)。
要解决这个问题:创建扩展 GenericFilterBean 的过滤器(@Component)并在那里设置你的属性。然后@Autowire 将其添加到您的配置中,并像往常一样在过滤器注册中使用设置器。**
如果您有简单的配置属性(例如字符串),那么您可以使用带有 init 参数的 Map 并将其设置在 FilterRegistration bean 上。
【问题讨论】:
标签: java spring configuration