假设我有带有 Spring 安全性的 Spring MVC 驱动的应用程序。我有:
- 对表 User 提供 CRUD 操作的 UserBean 类
- UserController : 将User的操作暴露给 http 客户端的控制器
- UserLogin:来自 Spring security 的身份验证提供程序,用于对用户进行身份验证。
如果出现以下情况,我应该如何配置我的应用程序:
- 我想要简单的 XML 配置,通过注释自动发现 bean (<context:component-scan base-package="org.example"/>)
- UserLogin 和 UserController 需要 UserBean 才能工作
- 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 配置应用程序的良好实践,并且安全部分与业务部分高度相关。我一直在寻找很好的例子,但我总是发现安全代码与业务代码隔离的情况。但是当安全和业务共享代码时我需要示例