请问例子中action里的service是如何注入进来的?_网络通信_编程问答

请问例子中action里的service是如何注入进来的?

来源:互联网  时间:2018/1/29 1:57:24

关于网友提出的“ 请问例子中action里的service是如何注入进来的?”问题疑问,本网通过在网上对“ 请问例子中action里的service是如何注入进来的?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 请问例子中action里的service是如何注入进来的?
描述:

看一个ssh项目视频时发现在action中注入service时使用了叫做 “默认按照名称注入”的方法,在看了代码后发现action没有被交由spring管理,不存在action包含<property ref="staffService">,另外也没用注解,那这里的service是如何被注入进来的呢?
测试过原代码运行是没问题的,但是我自己这样每次都是报 staffService.login(staff);这的空指针异常啊,求解!

staffAction.java

public class StaffAction extends ActionSupport implements ModelDriven<CrmStaff> {
    //封装数据
    private CrmStaff staff = new CrmStaff();
    @Override
    public CrmStaff getModel() {
        return staff ;
    }
    //默认按照名称注入
    private StaffService staffService;
    public void setStaffService(StaffService staffService) {
        this.staffService = staffService;
    }

    public String login(){
        //1 查询员工
        CrmStaff findStaff = staffService.login(staff);
    ...省略..

applicationContext-staff.xml

<!-- 员工配置项:dao、service -->
    
    <bean>
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <bean>
        <property name="staffDao" ref="staffDao"></property>
    </bean>

struts-staff.xml

<struts>
    <!-- 员工配置 -->
    <package name="sta" namespace="/" extends="common">
        <action name="staffAction_*" method="{1}">
...省略...
<action>

解决方案1:

解决了,应该是Struts2跟Spring整合没有成功。参考资料如下:

业务类在Spring配置文件中配置,Action不需要配置,Struts2的Action像没有整合Spring之前一样配置,<action>的class属性指定业务逻辑控制器类的全限定名。

Action中引用的业务类不需要自己去初始化,Struts2的Spring插件会使用bean的自动装配将业务类注入进来,其实Action也不是Struts2创建的,而是Struts2的Spring插件创建的。默认情况下,插件使用by name的方式装配,可以通过增加Struts2常量来修改匹配方式:设置方式为:struts.objectFactory.spring.autoWire = typeName,可选的装配参数如下:

name:相当于spring配置的autowrie="byName"(默认)
type:相当于spring配置的autowrie="byType"
auto:相当于spring 配置的autowrie="autodetect"
constructor: 相当于spring配置的autowrie="constructor"

上一篇githubio打不开,不知道为什么 比如说mint-ui,但是翻墙可以 dns也切换了
下一篇:没有了
明星图片
相关文章
《 请问例子中action里的service是如何注入进来的?》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)