快速业务通道

使用Acegi保护Java应用程序,第3部分: 实现对Java对象的访问控制 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
bean 代理,Spring IOC 框架要求您对代理创建器 bean 的实 例进行配置。Spring 的 IOC 框架使用代理创建器创建代理对象。清单 2 为代 理创建器 bean 的配置文件,用于保护名为 privateCatalog 的 Java 对象:

清单 2. 代理 bean 配置

<bean id="proxyCreator"    class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCr eator">    <property name="beanNames">     <list>      <value>privateCatalog</value>      <!--Names of other beans to be proxied -->     </list>    </property>    <property name="interceptorNames">     <list>       <value>privateCatalogSecurityInterceptor</value>      </list>    </property> </bean>

如清单 2 所示,<bean> 标记具有一个 class 属性,其值为 org.springframework.aop.framework.autoproxy. BeanNameAutoProxyCreator 。BeanNameAutoProxyCreator 类是 Spring IOC 框架的一部分,可以自动创建 bean 代理。Spring 框架提供了 BeanPostProcessor 接口,它提供了一种可扩 展机制,允许应用程序编写自己的逻辑来创建 bean 代理。Spring 的 BeanNameAutoProxyCreator 类实现了 BeanPostProcessor 接口并提供所有必需 的代理创建逻辑来保护 Java 类。因此,本文中您无需实现 BeanPostProcessor 接口。

在创建 bean 代理时,BeanNameAutoProxyCreator 类为所有由 beanNames 属性定义的 bean 创建代理(参见 清单 2 中 <bean> 标记的第一个 <property> 子元素)。beanNames 属性在 <list> 标记中包含一 个 bean 名称列表。在 清单 2 中,我只对希望为之创建代理的 privateCatalog bean进行了配置。

现在查看 清单 2 中 <bean> 标记的第二个 <property> 子元 素。它指定了名为 interceptorNames 的代理,它将一个或多个拦截器的名称封 装起来。我将在后文详细讨论拦截器概念。现在,只需了解拦截器可以拦截用户 并在用户访问 bean 之前实现访问控制策略。

现在,您已了解了如何对希望进行保护的 bean 配置代理。接下来,您将了 解 Spring 的 IOC 框架如何在内部为应用程序的 bean 创建代理对象。

使用Acegi保护Java应用程序,第3部分: 实现对Java对象的访问控制(4)

时间:2011-09-07 ibm Bilal Siddiqui

Spring IOC 发挥效用

在 “使用 Spring 创建 Java 对象” 的步骤 5 和步骤 6 中,您了解了 XMLWebApplicationContext 类如何从 XML 配置文件中读取 bean 定义并随后创 建 bean 实例。在创建 bean 实例之前,XMLWebApplicationContext 类将检查 XML 配置文件是否包含任何代理创建器 bean(即实现 BeanPostProcessor 接口 的 bean)配置。如果存在该 bean,它将要求代理创建器为您希望进行保护的 bean 创建 bean 代理。

现在考虑代理创建器如何在内部创建代理对象:

代理创建器(即 BeanNameAutoProxyCreator 类)装载 清单 2 中配置的 beanNames 属性文件中指定的所有 bean 名称。

代理创建器使用 bean 名称装载各自的 Java 类,这些类使用了每个 bean 定义的 class 属性。

代理创建器创建 清单 2 所示的 interceptorNames 属性中指定的拦截器的 实例。

最后,代理创建器创建一个 Cglib2AopProxy 类的实例,将所有 bean 名称 (步骤 2)和拦截器(步骤 3)传递到 Cglib2AopProxy 类。Cglib2AopProxy 类是 Spring 框架的一部分并用于生成动态代理对象。在本例中, Cglib2AopProxy 类将创建安全 bean 访问控

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号