我今天在做spring security3的另一种配置方式,测试时,无法对自定义的securityMetadataSource进行注入想要使用的dao处理,后来调试发现注入进去时null,后来看到篇文章,说是对于注入进来的是获取不到的,利用构造可以解决,我试了一下,果然好用,发上来,希望对大家有帮助。

解决方案如下:

1、自定义的securityMetadataSource配置部分,使用构造加载

<beans:bean id="mySecurityMetadataSource" class="app_security.MyInvocationSecurityMetadataSource">
<beans:constructor-arg><beans:ref bean="resourceDao"/></beans:constructor-arg>
</beans:bean>

<beans:bean id="resourceDao" class="com.ipi.tyr.module.resourceModule.dao.impl.ResourceDaoImpl"></beans:bean>

2、在自定义的securityMetadataSource类,

private ResourceDao resourceDao;
public MyInvocationSecurityMetadataSource(ResourceDao resourceDao) {
this.resourceDao = resourceDao;
loadResourceDefine();
}