[英]How to convert an xml config bean to java annotation bean ( spring boot )
[英]Spring xml to java config: how to convert nested xml bean definition
<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,则它们将为null(不知道为什么,如果有人急于解释,请这样做)。
解决此问题的方法:创建扩展GenericFilterBean的filter(@Component)并在那里设置属性。 然后@Autowire将其连接到您的配置,并照常使用设置器进行过滤器注册。**
如果您具有简单的配置属性(例如String),则可以将Map与init参数一起使用,并在FilterRegistration bean上进行设置。
由于它是仅在此特定外部Bean中使用的Bean,因此您只需将其转换为实例创建并设置适当的属性即可。
您不能使用“ Filter
界面,因为该界面没有票证验证程序的设置器。
使用AbstractTicketValidationFilter
代替:
@Bean
FilterRegistrationBean ticketValidationFilter(){
AbstractTicketValidationFilter ticketValidationFilter = new
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter();
FilterRegistrationBean frb = new FilterRegistrationBean();
frb.addUrlPatterns("/*");
frb.setFilter(ticketValidationFilter);
//here be ticket validaror
TicketValidator validator = new org.jasig.cas.client.validation.Cas20ServiceTicketValidator("https://localhost:8443/cas");
ticketValidationFilter.setTicketValidator(validator);
//end of ticket validator config
Map<String, String> initParamMap = new HashMap<String, String>();
initParamMap.put("service", "http://localhost:8889/cas-client");
frb.setInitParameters(initParamMap);
return frb;
}
Java config的全部优点在于,可以将某些复杂的xml配置转换为非常简单的Java。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.