• Spring.Net学习笔记(0)-错误汇总


    1.错误一:ObjectDefinitionStoreException

    “Spring.Objects.Factory.ObjectDefinitionStoreException”类型的未经处理的异常在 Spring.Core.dll 中发生

    通过看详细信息,原来是找不到文件

    未能找到文件“F:20160221DemoCPrjinDebugobjects.xml”。

    处理方式:将objects.xml的【复制到输出目录】设置为始终复制

    2.错误二:annotLoadObjectTypeException

    “Spring.Core.CannotLoadObjectTypeException”类型的未经处理的异常在 Spring.Core.dll 中发生

    通过看详细信息,原来是找不到对象的定义

    Cannot resolve type [Person] for object with name 'Person' defined in file [F:20160221DemoCPrjinDebugobjects.xml] line 3

    处理方式

    <?xml version="1.0" encoding="utf-8" ?>
    <objects xmlns="http://www.springframework.net">
      <object id="Person" type="CPrj.Person,Cprj"></object>
    </objects>

    3.错误三:ConfigurationErrorsException

    “System.Configuration.ConfigurationErrorsException”类型的未经处理的异常在 Spring.Core.dll 中发生

    查看详细信息,原来是找不到配置文件(obejcts拼错了)

    Error creating context 'spring.root': 未能找到文件“F:20160221DemoCPrjinDebugobejcts.xml”。

    处理方式

    <spring>
        <context>
          <resource uri="file://objects.xml"></resource>
        </context>
      </spring>

    4.错误四:TypeInitializationException

    “System.TypeInitializationException”类型的未经处理的异常在 CPrj.exe 中发生

    查看详细信息

    “Spring.Context.Support.ContextRegistry”的类型初始值设定项引发异常。

    处理方式:把<startup>放到最后一个节点

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    
      <configSections>
        <sectionGroup name="spring">
          <section name="context" type="Spring.Context.Support.ContextHandler,Spring.Core"></section>
        </sectionGroup>
      </configSections>
    
      <spring>
        <context>
          <resource uri="file://objects.xml"></resource>
        </context>
      </spring>
    
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
      </startup>
    </configuration>

    5.使用属性注入时,报了如下错

    Error creating context 'spring.root': 'MovieFinder' node cannot be resolved for the specified context [Spring.Examples.MovieFinder.MovieLister

    意思是说,在MovieLister类中,找不到属性名为MovieFinder项

    看了下配置文件,如下

    <objects xmlns="http://www.springframework.net">
          <object name="MyMovieLister" type="Spring.Examples.MovieFinder.MovieLister,Spring.Examples.MovieFinder">
            <property name="MovieFinder" ref="MyMovieFinder"></property>
          </object>
          <object name="MyMovieFinder" type="Spring.Examples.MovieFinder.MovieFinder,Spring.Examples.MovieFinder"></object>
          <!--<description>An example that demonstrates simple Ioc features</description>-->
        </objects>

    再看下MovieLister类

    public class MovieLister
    {
        private MovieFinder finder;
        public List<Movie> MoviesDirectedBy()
        {
            List<Movie> allMovies = finder.FindAll();
            return allMovies;
        }
    }

    发现问题了,不是MovieFinder,是finder;配置文件改成如下,就OK了

    <objects xmlns="http://www.springframework.net">
      <object name="MyMovieLister" type="Spring.Examples.MovieFinder.MovieLister,Spring.Examples.MovieFinder">
        <property name="finder" ref="MyMovieFinder"></property>
      </object>
      <object name="MyMovieFinder" type="Spring.Examples.MovieFinder.MovieFinder,Spring.Examples.MovieFinder"></object>
      <!--<description>An example that demonstrates simple Ioc features</description>-->
    </objects>

    6.在构造函数注入是报如下错

    Error creating context 'spring.root': Cannot instantiate a class that does not have a no-argument constructor [Spring.Examples.MovieFinder.ColonMovieFinder].

    原来Spring容器默认在加载的时候,都会尝试预先创建对象。

    处理方式一:给ColonMovieFinder一个无参数的构造函数

    处理方式二:在配置文件中提供相应的构造函数参数

    <objects xmlns="http://www.springframework.net">
      <object name="MyMovieLister" type="Spring.Examples.MovieFinder.MovieLister,Spring.Examples.MovieFinder">
        <property name="finder" ref="MyMovieFinder"></property>
      </object>
      <object name="MyMovieFinder" type="Spring.Examples.MovieFinder.MovieFinder,Spring.Examples.MovieFinder"></object>
      <object name="AnotherMovieFinder" type="Spring.Examples.MovieFinder.ColonMovieFinder,Spring.Examples.MovieFinder">
        <constructor-arg index="0" value="movies.txt"></constructor-arg>
        <constructor-arg index="1" value="arg2"></constructor-arg>
      </object>
      <!--<description>An example that demonstrates simple Ioc features</description>-->
    </objects>

    7.xml错误

    错误代码如下

    Error creating context 'spring.root': Unable to locate Spring NamespaceHandler for XML schema namespace []

    看了下xml

    <objects>
      <object name="person" type="SpringNetSetDi.Person,SpringNetSetDi">
        <property name="RealName" value=""></property>
      </object>
    
      <object name="animal" type="SpringNetSetDi.Animal,SpringNetSetDi">
        <property name="TypeList">
          <list element-type="string">
            <value>哺乳类</value>
            <value>鸟类</value>
            <value>爬行类</value>
            <value>昆虫类</value>
            <value>两栖类</value>
          </list>
        </property>
      </object>
    </objects>

    处理方式,objects处加上属性

    <objects  xmlns="http://www.springframework.net">
      <object name="person" type="SpringNetSetDi.Person,SpringNetSetDi">
        <property name="RealName" value=""></property>
      </object>
    
      <object name="animal" type="SpringNetSetDi.Animal,SpringNetSetDi">
        <property name="TypeList">
          <list element-type="string">
            <value>哺乳类</value>
            <value>鸟类</value>
            <value>爬行类</value>
            <value>昆虫类</value>
            <value>两栖类</value>
          </list>
        </property>
      </object>
    </objects>

    8.方法注入时,掉进的坑

    事情来源,以下怎么改代码,方法都不能被替换

    <object name="replaceValue" type="SpringNetMethodDi.SuperMarket,SpringNetMethodDi"></object>
    <object name="realOp" type="SpringNetMethodDi.RealOp,SpringNetMethodDi">
      <replaced-method name="Buy" replacer="replaceValue">
        <arg-type match="string"/>
      </replaced-method>
    </object>

    以下代码是可以运行的,发现不同了没

    <object name="replaceValue" type="SpringNetMethodDi.SuperMarket,SpringNetMethodDi"></object>
    <object name="realOp" type="SpringNetMethodDi.RealOp,SpringNetMethodDi">
      <replaced-method name="Buy" replacer="replaceValue">
        <arg-type match="String"/>
      </replaced-method>
    </object>

    不同之处,竟然是string和String

    更多精彩内容请看:http://www.cnblogs.com/2star
  • 相关阅读:
    用户故事——老师
    用户故事——学生
    用户故事——管理员
    WebStorm 2018 最新激活码 license server
    vue cli 4.3.1版本脚手架 新人请看系列
    iviewtable表格数据 录音播放下载
    git修改远程仓库地址
    git上传提交个人心得
    layui 数据拆分 重组数据
    日志
  • 原文地址:https://www.cnblogs.com/kimisme/p/5204820.html
Copyright © 2020-2023  润新知