整合ssm时controller层扫描不到service层的bean

写程序一直发现这么一个问题:

 翻遍了csdn没有找到怎么回事,感觉该配置的都配置了,然后看到spring配置文件里有

 翻译过来就是没有为该文件配置应用上下文,点后面的配置,问题解决了

后面想把spring配置文件设置为java文件,发现idea下面有一个spring的选项

 点击spring选项

 双击项目名称可以看见整个项目的spring配置

 点击加号将spring配置放进来就好了

但是没配置运行是正常的,所以一直都没点后面的配置,就是不能使用自动注入

盲猜能正常运行是因为在代码中使用spring配置文件时加了路径,运行后能根据这些路径找配置文件,但是spring配置文件和springmvc文件没有整合成一起。

记录一下这个问题,虽然很小,但是希望不要有谁遇到这个问题和我一样浪费大把时间来查,浪费时间。。。


后面接着运行,发现还是无法注入,虽然在软件中是可以注入了,但是运行以后还是注入失败,报错如下

 service层还是无法注入,后面经过查阅资料,发现spring加载要在web.xml文件中配置,我一直跟着视频学习,自己编写了一个监听器,发现这样没有成功载入配置文件,默认的载入配置文件为

<!--说明配置文件的位置-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <!--默认的监听器-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

后来想用注解开发,不想要xml文件,查阅资料以后找到

<!--通过指定context参数,让Spring使用AnnotationConfigWebApplicationContext启动容器而非XmlWebApplicationContext
          默认没配置时是使用XmlWebApplicationContext-->
    <context-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </context-param>
    <!--指定标注了@Configuration的类,多个可以用逗号分隔-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>com.librarysystem.config.springConfig</param-value>
    </context-param>
    <!--配置监听器-->
    <!--监听器将根据上面的配置使用AnnotationConfigWebApplicationContext根据contextConfigLocation指定的配置类启动Spring容器-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

问题得到解决,至于为什么自己写的监听器不起效果,查看默认监听器发现

 继承了ContextLoader类,并且通过

this.initWebApplicationContext(event.getServletContext());初始化了配置文件

可编写一个监听器继承这个类调用这个方法

 发现成功运行,自定义监听器加载配置文件成功

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值