spring.xml中<jaxws:client</jaxws:client>这个位置org.springframework.beans.factory.xml.XmlB...
spring.xml中<jaxws:client </jaxws:client> 这个位置org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 107 in XML document from URL 是无效的
严重: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172)
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1066)
at org.springframework.context.support.AbstractApplicationContext.doClos
-
Spring实例化BeanFactory的时候是默认到classPath下面查找名为applicationContext.xml的文件。
-
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
Spring BeanFactory实例化Bean的过程
Bean的实例化是Bean
生命周期
的一个非常重要的环节,一般来说,初始化后,就不再改变了,直到bean被从BeanFactory中显式的移除。当从BeanFactory中通过getBean()方法获取一个bean的时候,BeanFactory会经过如下的步骤来构建Bean的实例,这正是实例化Bean的过程:
-
调用Bean的默认
构造方法
,或者在指定的构造方法,生成bean实例(暂称为instance1)。
-
如果Bean的
配置文件
中注入了Bean属性值,则在instance1基础上进行属性注入形成instance2,这种注入是覆盖性的。
-
如果Bean实现了InitializingBean接口,则调用afterPropertiesSet()方法,来改变或操作instance2,得到instance3。
-
如果Bean的配置文件中指定了init-method="init"属性,则会调用指定的初始化方法,则在instance3的基础上调用初始化方法init(),将对象最终初始化为instance4;当然,这个初始化的名字是任意的。