最近公司同事使用spring 静态注入方式(这里要感谢一下我的同事!!) 实现了在jbpm action中调有srping的业务bean,例子如下
先在spring 配置文件里声明两个bean.一个是业务类 userservice,另一个是jbpm的action类
业务类代码就不举例了 和平时的没什么区别,区别在与jbpm action类的写法
不知道大家有没有看明白在spring启动的时候会加载全部的bean包括这个jbpmaction,并将 userService注入到 JbpmAction的类属性 userService中.
但jbpm是new一个 JbpmAction所以在 JbpmAction 的构造方法里在将这个已经注入实现的静态属性付给实例属性 userServ
有人会问那为什么不直接调用类方法,很遗憾当时我们调有时报null异常,因为时间原因我们没有追查原因.大家有时间可以实验一下
先在spring 配置文件里声明两个bean.一个是业务类 userservice,另一个是jbpm的action类
xml 代码
- <bean id="userService" class="com.manager.UserService">
- <property name="userdao" ref="userdao"></property>
- </bean>
<bean name="jbpmaction" class="com.manager.JbpmAction" - <property name="userService"><ref bean="userService"/></property>
- </bean>
业务类代码就不举例了 和平时的没什么区别,区别在与jbpm action类的写法
java 代码
- public class JbpmAction implements ActionHandler {
- private static UserService userService;
- private UserService userServ;
- public JbpmAction(){
- this.userserv=JbpmAction.userservice;
- }
- public void execute(ExecutionContext executionContext) throws Exception {
- userserv.getUser();
- }
- public static UserService getUserService(){
- return userService;
- }
- public void setUserService(UserService userService){
- JbpmAction.userService=userService;
- }
- }
不知道大家有没有看明白在spring启动的时候会加载全部的bean包括这个jbpmaction,并将 userService注入到 JbpmAction的类属性 userService中.
但jbpm是new一个 JbpmAction所以在 JbpmAction 的构造方法里在将这个已经注入实现的静态属性付给实例属性 userServ
有人会问那为什么不直接调用类方法,很遗憾当时我们调有时报null异常,因为时间原因我们没有追查原因.大家有时间可以实验一下