问题标签 [spring-annotations]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2485 浏览

spring - spring @RequestMapping URI模板错误

我对@RequestMapping URI 模板有疑问。我构建了一个控制器来处理用户详细信息更新。我在下面写了两种方法。

请求 URI 类似于 /project_name/updateUser/app/au/132

当我在 tomcat 中运行这个应用程序时,第一个方法永远不会被调用。控制器始终使用第二个。但是在spring framework doc中,它说“一个方法可以有任意数量的@PathVariable注释”。

所以,我无法弄清楚为什么我不能在一个方法中使用三个 @PathVariable 注释。

另一件事是,如果我像下面这样更改第一个方法 @RequestMapping 注释,则可以调用它。

似乎 spring 无法在 ONE 方法中处理三个 @PathVariable 注释。

有没有人可以告诉我为什么或哪里做错了,拜托?

提前致谢!

0 投票
0 回答
2716 浏览

spring-annotations - Spring DefaultMessageListenerContainer/SimpleMessageListenerContainer (JMS/AMQP) 注解配置

因此,我正在开展一个项目,其中许多团队都使用通用服务并遵循通用架构。正在使用的服务之一是消息传递,目前是带有 ActiveMQ 的 JMS。几乎所有团队都需要遵循一套严格的规则来创建和发送消息,即一切都是 pub-subscribe 并且发送的消息有点像下面这样:

'jsonPayload' 来自一个所有团队都从其扩展的基类,因此它具有共同的属性。

所以基本上在 JMS 中,每个人总是发送相同类型的消息,但是发送到不同的 ActiveMQ 主题。通过 JMS 发送消息 (WorkDTO) 时,首先将其转换为 JSON 对象,然后在 TextMessage 中发送。

每当团队希望为某个主题创建订阅者时,他们都会创建一个 DefaultMessageListenerContainer 并对其进行适当配置以接收消息(我们使用基于 Java 的 Spring 配置)。基本上,团队定义的每个 DefaultMessageListenerContainer 都几乎相同,除了接收消息的目的地和消息处理程序。

我想知道在这种情况下如何通过注释进一步抽象消息配置?这意味着,由于几乎每个人都必须遵循相同的要求,因此以下内容是否有用:

当然,我省略了有关如何使用 @Listener 注释配置 DefaultMessageListenerContainer 的部分。我开始研究 BeanFactoryPostProcessor 来创建必要的类并将它们添加到应用程序上下文中,但我不知道如何做所有这些。

我问这个问题的原因是我们正在从 JMS/ActiveMQ 切换到 AMQP/RabbitMQ,并且希望通过使用注释来进一步抽象消息传递配置。我知道 AMQP 不像 JMS,所以配置细节会略有不同。我不相信我们会从 AMQP 切换到其他东西。

在这里,团队只需要知道目的地的名称以及他们是否想让他们的订阅持久。

这只是最近突然出现在我脑海中的事情。对此有什么想法吗?

我不想做一些过于复杂的事情,所以另一种选择是创建一个方便的方法,它返回一个预先配置的 DefaultMessageListenerContainer 给定一个目的地和一个消息处理程序:

0 投票
1 回答
4821 浏览

spring - Struts2 Spring 插件:带注释操作的依赖注入不起作用

我有以下问题。我有一个带有 struts2、spring 和 struts2-spring-plugin 的应用程序启动并运行。通过 Spring 的依赖注入通常可以正常工作。(例如。将 bean 注入到动作中)但是:我的动作类不是按照定义的每个会话通过 spring 注入的。按要求调用 Actions 构造函数。似乎 spring 不使用 Spring 的对象工厂。在 struts.xml 中定义 Action 而不是使用 @Action Annotations 时,依赖注入有效!

这里有一些片段: 这里我定义了一个 bean 和一个动作。注入 bean 是有效的,但是在使用 @Action 注释时,这里永远不会创建 Action。

这里执行Action:

调用 URL“http://localhost/myApp/patient”会在每个请求上创建一个 Action-Class 实例,而无需输入public PatientAction PatientAction()方法。

当我在struts中使用它时,xml:

并调用“http://localhost/myApp/foo”该动作是通过弹簧注入的。

这是我的 struts.properties 文件:

我使用的版本(通过 Maven :)

谁能告诉我我在注释上做错了什么?

0 投票
1 回答
1136 浏览

spring - Spring中的面向切面编程

2012 年 2 月 28 日下午 12:46:54 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息:刷新 org.springframework.context.support.ClassPathXmlApplicationContext@780024:启动日期 [2 月 28 日星期二 12:46:54 GMT+05: 30 2012];上下文层次结构的根 2012 年 2 月 28 日下午 12:46:54 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO:从类路径资源加载 XML bean 定义 [newSpringXMLConfig.xml] 2012 年 2 月 28 日 12:46:55 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons INFO:在 org.springframework.beans.factory.support.DefaultListableBeanFactory@ef98ac 中预实例化单例:定义 bean [org.springframework.aop.config.internalAutoProxyCreator,tri,cir ,形状,LAspect]; 工厂层次结构的根 2012 年 2 月 28 日 12:46:55 PM org. springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons INFO:销毁 org.springframework.beans.factory.support.DefaultListableBeanFactory@ef98ac 中的单例:定义 bean [org.springframework.aop.config.internalAutoProxyCreator,tri,cir,shape,LAspect] ; 工厂层次结构的根 线程“main”org.springframework.beans.factory.BeanCreationException 中的异常:在类路径资源 [newSpringXMLConfig.xml] 中创建名称为“tri”的 bean 时出错:bean 的初始化失败;嵌套异常是 java.lang.IllegalArgumentException:切入点格式不正确:在字符位置 4 get() 处期望“名称模式” ^ DefaultListableBeanFactory@ef98ac:定义bean [org.springframework.aop.config.internalAutoProxyCreator,tri,cir,shape,LAspect];工厂层次结构的根 线程“main”org.springframework.beans.factory.BeanCreationException 中的异常:在类路径资源 [newSpringXMLConfig.xml] 中创建名称为“tri”的 bean 时出错:bean 的初始化失败;嵌套异常是 java.lang.IllegalArgumentException:切入点格式不正确:在字符位置 4 get() 处期望“名称模式” ^ DefaultListableBeanFactory@ef98ac:定义bean [org.springframework.aop.config.internalAutoProxyCreator,tri,cir,shape,LAspect];工厂层次结构的根 线程“main”org.springframework.beans.factory.BeanCreationException 中的异常:在类路径资源 [newSpringXMLConfig.xml] 中创建名称为“tri”的 bean 时出错:bean 的初始化失败;嵌套异常是 java.lang.IllegalArgumentException:切入点格式不正确:在字符位置 4 get() 处期望“名称模式” ^ 在类路径资源 [newSpringXMLConfig.xml] 中定义:bean 初始化失败;嵌套异常是 java.lang.IllegalArgumentException:切入点格式不正确:在字符位置 4 get() 处期望“名称模式” ^ 在类路径资源 [newSpringXMLConfig.xml] 中定义:bean 初始化失败;嵌套异常是 java.lang.IllegalArgumentException:切入点格式不正确:在字符位置 4 get() 处期望“名称模式” ^

原因:java.lang.IllegalArgumentException:切入点格式不正确:在字符位置 4 get() 处期望“名称模式” ^

Java 结果:1 构建成功(总时间:1 秒)

和代码:

0 投票
1 回答
1780 浏览

xml - Spring MVC 注释 vs xml 配置

我一直在升级使用 Framework 2.5.6、Security 2.0.4 和 Web Services 1.5 的 Spring MVC 应用程序。在研究较新的版本时,我意识到 Spring 3.1.0 和 3.0.7 不赞成控制器的继承,而是支持注释驱动的配置。我知道注释是 Spring 配置的前进方向,但在我的情况下,将为依赖注入配置默认值的人无法编辑 src 文件。

我公司的流程是这样的:

  • 我是 Java EE 应用程序的主要开发人员。
  • 我们有另一个设计人员和技能较低的开发人员团队,他们定制 jsp、css、(一些)javascript、xsl、XML Spring 配置和 Spring 属性文件。
  • 我们有超过 100 个活动的自定义实现,每个都有不同的默认值注入到 bean 中,有些带有 i18n 消息传递。
  • 我们的核心产品中没有数百个不同的主题,而是有一个非常智能的构建过程,允许我们的“定制团队”在他们自己的源代码控制系统中维护定制应用程序。在编译和部署到 Tomcat 之前,构建脚本将覆盖从自定义应用程序到核心应用程序的所有文件。因此,src 文件永远不会被触及,从而使我们公司内部的工程与美学脱钩。

(如果我有机会在应用程序中构建一个配置模块,它就已经完成了。所以现在我们被困在管理 XML 配置上。)

那么在我的情况下,注释配置将如何工作?在我看来,考虑到我们产品的架构,这不是一个可行的解决方案。注释驱动配置的主要目标不是让开发人员在 src 文件而不是 XML 文件中管理依赖注入吗?

有谁知道在 Spring 3 中只有 XML 配置的方法?

编辑:我发现了这个:http ://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-java-combining所以我想我可以迁移所有的控制器使用注释但保留其他 bean 不变,因为我们的定制团队不经常触及控制器配置。

0 投票
1 回答
1067 浏览

spring - 如何使用 Spring 注释用户存在检查?

我想通过 JSON API 管理用户项目,我想使用相对路径控制器。像这样:

我将添加许多方法,每次我都必须检查用户是否存在。而不是添加那段代码:

...在每个方法的开始,我想创建一个自定义注释,如果用户不存在,它将返回 404。

我发现本教程可以做到这一点。这真的像描述的那么复杂吗?你知道其他解决方案吗?(我想避免编写 2 个类和 50 多行代码,仅注释 4 行。)

谢谢你。

0 投票
3 回答
5485 浏览

java - Spring MVC @AutoWired 响应不起作用

我有 :

和标签:

在我的 config.xml

我觉得应该够了,但是@Autowired 有问题:

没有为依赖找到类型 [javax.servlet.http.HttpServletResponse] 的匹配 bean:预计至少有 1 个符合条件的 bean...

我已经看到一些解决方案提到设置 bean 等,但我确信必须有一些更好的方法。注释扫描应该解决这个问题。如果我必须在不同时间为几个不同的注释在 xml 中设置 bean,那就太糟糕了。我只希望注释在我使用它们时起作用!

我见过: Spring MVC - 响应

谢谢!

0 投票
1 回答
512 浏览

spring - 在 Spring 中将属性值分配给 Annotation 值

我正在使用 ehcache-spring-annotations 和 @Cacheable 注释(我会在 Spring 3.1 中使用新的 @Cacheable,但它并没有提供我需要的所有东西)。

我想将 cacheName 变量设置为属性文件中条目的值,但如果我尝试使用 EL 表示法,它会将其读取为文字字符串。有没有解决的办法?

在 .properties 文件中...

例外:

0 投票
2 回答
2352 浏览

spring - Spring找不到带注释的类

pom.xml

春天.xml

班级活动:

例外:

0 投票
2 回答
3924 浏览

spring - 在 Spring 3 MVC Web 应用程序中实现授权/访问控制的最佳方法是什么?

哥们,

我即将使用 Spring 3 MVC 作为 Web 框架,Hibernate Annotations 作为 ORM 框架来开发一个 Web 应用程序但是,我面临一个问题,为此应用程序设计一个基于数据库的良好访问控制。在我的工作中,我们习惯于这样设计:

  • (CompanyName)User.java - 表示系统中用户的类

  • Profile.java - 一个类,表示系统中的ROLE与(CompanyName)User有NN关系 。对于ROLE,我的意思是一个用户组,例如(ADMIN、ANONYMOUS、CUSTOMER SERVICE USER 等)

  • UserProfile.java - 表示UserProfile之间关系的类。它代表数据库中NN关系的JOIN TABLE 。

  • Module.java - 一个类,表示 Web 应用程序中的MODULE。每个模块由无限的特征组成,但每个特征只能与一个MODULE相关。例如,用户身份验证功能将与安全身份验证模块相关。模块是应用程序中使用@Controller 标记的控制器。

  • Feature.java - 表示应用程序中的FEATURE的类。每个功能都由一个或多个操作组成。例如,用户管理是一项功能。因此,它由许多操作组成(例如 CREATE、READ、UPDATE 和 DELETE USER)。此外,FEATURE 有一个 ENTRY URL,表示该功能的 URL(在单击按钮/链接时将用户重定向到该功能)。每个 URL 都映射到 Module(Controller) 中的一个方法。

  • Operation.java - 表示Web 应用程序中的操作的类。操作基本上是单个/基本操作,例如REGISTER USERREMOVE USER,但不一定是 CRUD 操作。每个操作都有一个ENTRY URL(显示开始操作的页面的 URL)。例如,对于USER REGISTRATION操作,条目URL将是/webapplicationName/moduleName(USER)/featureName(USER MANAGEMENT)/operationName(REGISTER USER)。但是一个操作可能需要一个页面流来完成。例如,用户注册操作可能需要一个带有注册表单的页面、一个 URL(通常映射到一个方法)作为提交表单的操作和一个SUCCESS/ERROR页面,以显示SUCCESS/ERROR消息。

  • Permission.java - 表示系统中URL的类。每个 Permission 都与一个或多个OPERATIONS (Operation.java) 相关,以组成一个PAGE FLOW。例如:一个USER REGISTRATION操作可能有以下URLs/PERMISSIONS

    • /webapplicationName/moduleName(USER)/featureName(USER MANAGEMENT)/operationName(USER REGISTRATION)/register - 映射到 (CompanyNameUser)Controller 中的方法的 URL,用于提交表单(表单操作)并保存在数据库中,通常调用(公司名称用户)DAO

    • /webapplicationName/moduleName(USER)/featureName(USER MANAGEMENT)/operationName(REGISTER USER)/success/ - 映射到控制器中的方法以显示成功消息的 URL

    • /webapplicationName/moduleName(USER)/featureName(USER MANAGEMENT)/operationName(REGISTER USER)/error/ - 映射到控制器中的方法以显示错误消息的 URL

  • ProfilePermission.java - 一个表示配置文件和权限之间的 NN 关系的 JOIN TABLE 的类。

这里的问题是,如果我使用 Spring Security 来实现访问控制,我注定要实现一个 User.java 类(我无法自定义名称),我还需要一个用于 ROLES 的类和其他用于 AUTHORITIES 的类。所以,我无法建立自己的访问控制流程。我想过使用 SERVLET FILTER 检查权限接受/拒绝访问。但是,当我尝试重定向到 URL 或仅在过滤器中执行 chain.doFilter() 时,它只会显示 ERROR 404。我认为这是因为我使用DefaultAnnotationHandlerMapping来处理请求。也就是说,我的配置如下:

网页.xml:

根上下文.xml:

servlet 上下文:

安全过滤器.java:

所以我该怎么做?我应该使用 Spring Security 吗?有什么方法可以使用 Spring Security 实现我自己的自定义流程?我应该在处理程序映射中使用拦截器而不是使用过滤器吗?我将不胜感激任何帮助/建议。

提前致谢!