将SpringBean注入遗留web应用程序POJO

将SpringBean注入遗留web应用程序POJO,spring,Spring,为了在我的传统web应用程序(Tomcat 8.0.26)中为POJO提供发送ActiveMQ消息的能力,我建议在应用程序中引入Camel(2.15.2)/Spring(4.2.1),纯粹是为了管理池MQ连接。我希望没有更简单的方法 以Spring的方式做事我认为一切都需要基于MVC体系结构,HTTP servlet感知控制器可以访问servlet上下文,从而访问Spring上下文,以便将beanFactory bean注入到用@Controller和@Service注释的类中(事实上,必须有一

为了在我的传统web应用程序(Tomcat 8.0.26)中为POJO提供发送ActiveMQ消息的能力,我建议在应用程序中引入Camel(2.15.2)/Spring(4.2.1),纯粹是为了管理池MQ连接。我希望没有更简单的方法

以Spring的方式做事我认为一切都需要基于MVC体系结构,HTTP servlet感知控制器可以访问servlet上下文,从而访问Spring上下文,以便将beanFactory bean注入到用@Controller和@Service注释的类中(事实上,必须有一个Spring@Controller类使Spring能够注入@Service类

然而,正如我所说的,这是不会使用SpringWeb框架的遗留代码

在经历了很多痛苦之后,似乎我能将beanFactory Bean注入我的POJO的唯一方法就是使用AspectJ和编织路线。在我走这条路之前,有人能告诉我这是目前最好的方法吗(我读到的描述此解决方案的内容是从2011年开始的)?你能给我指一下文档和一个工作示例吗

非常感谢。

1)带有@Configurable的aspectj

在@Configuration注释类中

您可以添加更多注释

@配置
@EnableLoadTimeWeaving(aspectjWeaving=EnableLoadTimeWeaving.aspectjWeaving.ENABLED)
@EnableSpringConfiguration
@促性腺激素

要启用aspectj和@Configurable注释, 您需要将aspectj库导入到您的项目中,并将spring tomcat可检测java代理添加到您的tomcat库文件夹中(在这里看一下,它演示了如何配置tomcat)

如果您要使用“新建”创建POJO,这对您没有帮助 MyPojo p=new MyPojo();//这不是什么黑魔法,您需要自己满足依赖关系),但这会很有帮助,例如,当您通过hibernate之类的框架加载某些实体并希望向其中注入一些内容时@这是一个可以在这些情况下进行评估的选项,对于您所描述的,我宁愿不使用它

2) 您可以使用一些静态方法来使用一些静态集Springbean,并从POJO中使用它们,比如


类Util{

私有静态SprintBeanWithJmsSupport x

公共静态设置SpringBeanHandleJMSMessages(带JMSSupport x的SprintBean){ Util.x=x; }

公共静态发送JmsMessage(JmsMessage m){ x、 发送消息(m) } }
您可以使用Util.sendJmsMessage(…)

这有点糟糕,但它确实有效,我个人不喜欢这种方法

3) 当需要使用Springbean时,在pojo中设置Springbean(可能在一些适合您的域的漂亮接口后面)

如果您使用spring mvc,您可能会得到一些使用某些服务的控制器(通常它们处理安全/db访问,并且是启动“用例”的入口点),因为这些层中的所有内容都由spring处理,因此将spring bean传递给POJO来处理jms消息将非常简单,在我看来,这是处理这个问题的一个很好的方法

我主要是基于记忆,有些东西可能不完全准确,加上我的英语是。。它是什么,所以希望这能有所帮助。

这已经足够近了(我在手机上,Spring标签上没有dupehammer),我要将它标记为我的writeup的副本。我建议使用AspectJ方法;对于您的用例,它需要最少的实现工作。