2

假设我有带有 Spring 安全性的 Spring MVC 驱动的应用程序。我有:

  1. 对表 User 提供 CRUD 操作的 UserBean 类
  2. UserController : 将User的操作暴露给 http 客户端的控制器
  3. UserLogin:来自 Spring security 的身份验证提供程序,用于对用户进行身份验证。

如果出现以下情况,我应该如何配置我的应用程序:

  1. 我想要简单的 XML 配置,通过注释自动发现 bean (<context:component-scan base-package="org.example"/>)
  2. UserLogin 和 UserController 需要 UserBean 才能工作
  3. UserLogin 和 UserController 使用事务注解和方面注解

我看到以下机会:

创建一个常见的 Spring XML 配置文件,供 DispatcherServlet 和 ContextLoaderListener 使用

  • 缺点:没有人在教程中展示该解决方案。所有 bean 都是重复的(一个实例在 ContextLoaderListener 上下文中,第二个在 DispatcherServlet 中)。重复可能会导致一些难以跟踪的错误。复制并不优雅

创建两个 Spring XML 配置文件,一个用于 ContextLoaderListener(主),一个用于 DispatcherServlet(控制器)。UserBean 在第一个配置中声明并在第二个配置中可见

  • 缺点:为避免重复,我必须将复杂的组件扫描规则添加到两个文件(上下文:组件扫描)。<tx:annotation-driven 和 <aop:aspectj-autoproxy/> 必须在两个文件中定义。在声明新东西时,我仍然会怀疑哪个配置文件是合适的。

创建两个 Spring XML 配置文件并包含第三个用于常见设置,例如 <tx:annotation-driven

  • 缺点:我想要简单的解决方案......

摘要:我正在寻找使用 Spring MVC + Spring Security 配置应用程序的良好实践,并且安全部分与业务部分高度相关。我一直在寻找很好的例子,但我总是发现安全代码与业务代码隔离的情况。但是当安全和业务共享代码时我需要示例

类似的问题:ContextLoaderListener 与否?

4

2 回答 2

2

我的配置有两个 xml 文件,没有特别的原因,这就是它的工作方式。

这些示例 spring 安全项目提供了许多不同类型配置的良好示例,也许您可​​以找到适合您的东西:

https://github.com/spring-projects/spring-security/tree/master/samples

于 2013-11-05T05:41:44.920 回答
0

我的问题中隐藏的信息是:有两个上下文是愚蠢的。

  1. 有人已经注意到了吗?
  2. 有没有办法进行单一应用程序配置?

答案:

  1. 是的。https://jira.springsource.org/browse/SPR-6903
  2. 是的。https://github.com/michaldo/spring-single-context-demo

适用于我的案例的最佳实践如下所述:https ://stackoverflow.com/a/14032213/2365727

于 2013-11-06T21:44:54.733 回答