zoukankan      html  css  js  c++  java
  • spring的bean不能注入原因分析

    1、异常信息

    2.有可能引起的原因:

    1、在applicationContext.xml的配置文件里的包扫描不对。

     

    2、在web.xml里没有加载spring容器。

     

    3、分布式工程,使用dubbo或者hsf通信,在服务层,或者消费层,单词写错了。

    4、还有一种可能,有可能是pom 里的jar包冲突。

    5、从ApplicationContext 获取bean的时候getBean传的参数与配置的bean的id不一致导致无法取到,建议bean的id与接口名保持一致,不要添加或去除字母:

    public static RedisUtilService getRedisUtilService() {
            // 此处应为redisUtil
            return (RedisUtilService)getApplicationContext().getBean("redisUtilService");
        }
    <hsf:consumer id="redisUtil" interface="com.asiainfo.retail.service.util.RedisUtilService"
                      version="${version}" group="${moon}">
        </hsf:consumer>

    6、web.xml的加载顺序与它们在 web.xml 文件中的先后顺序无关。不会因为 filter 写在 listener 的前面而会先加载 filter。加载顺序依次为:listener -> filter -> servlet,所以在filter中是无法使用@autowire注解注入bean的,需要我们手动加载,在过滤器中使用service是需要手动注入的。代码如下:

    private static ApplicationContext getApplicationContext() {
            ApplicationContext ac = null;
            try {
                ac = new ClassPathXmlApplicationContext("applicationContext.xml");
            } catch (Exception e) {
                e.printStackTrace();
            }
            return ac;
    }
    
    public static StaffInfoService getStaffInfoService() {
            return (StaffInfoService)getApplicationContext().getBean("staffInfoService");
    }
  • 相关阅读:
    AUTOCAD二次开发-----删除一个图层里面的所有对象
    AutoCAD .NET: 遍历模型空间
    c# 将dwg文件转化为pdf
    C# 读取CAD文件缩略图(DWG文件)
    C#.Net实现AutoCAD块属性提取
    用.NET从外部dwg文件导入块
    AutoCAD二次开发(.Net)之获取LSP变量的值
    AutoCAD二次开发(.Net)之创建图层Layer
    Ceilometer和Gnocchi的监控架构解析
    《Python核心编程》笔记
  • 原文地址:https://www.cnblogs.com/wanghaichao/p/9190238.html
Copyright © 2011-2022 走看看