编码-关于spring xml配置中的c命名空间和p命名空间的问题

问题描述

关于spring xml配置中的c命名空间和p命名空间的问题

<?xml version=""1.0"" encoding=""UTF-8""?>

xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
xmlns:c=""http://www.springframework.org/schema/c""
xsi:schemaLocation=""http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"">

c:age=""29"" c:axe-ref=""stoneAxe""/>

package com.app.service;

public interface Person {
public void useAxe();

}
package com.app.service;

public interface Axe {
public String chop();

}
package com.app.service.impl;

import com.app.service.Axe;

public class StoneAxe implements Axe {

public String chop() {    return ""石斧头砍柴好慢"";}

}
package com.app.service.impl;

import com.app.service.Axe;

public class SteelAxe implements Axe{

public String chop() {    return ""钢斧头真快"";}

}
package com.app.service.impl;

import com.app.service.Axe;
import com.app.service.Person;

public class Chinese implements Person {
private Axe axe;
private int age;

public  Chinese(Axe axeint age){    this.axe = axe;    this.age = age;}public void useAxe() {    System.out.println(axe.chop());    System.out.println(""age成员变量的值:"" + age);}

}
package com.app.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.app.service.Person;

public class SpringTest {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(""beans.xml"");
Person p = ctx.getBean(""chinese""Person.class);
p.useAxe();
}

}
运行测试类报错如下:
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread ""main"" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'chinese' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:641)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1157)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:280)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:979)
at com.app.test.SpringTest.main(SpringTest.java:11)

解决方案

<beans
xmlns=""http://www.springframework.org/schema/beans""
xmlns:xsi=""http://www.springframework.org/2001/XMLSchema-instance""

xmlns:p=""http://www.springframework.org/schema/p""x......<br/><strong>答案就在这里:</strong><a target='_blank' rel='nofollow' href='http://blog.csdn.net/wangxiangmingtian/article/details/9230663'>Spring 命名空间 p</a><br/>

解决方案二:
试试把Person这个类 创建一个bean节点

在测试类里面直接用

Person p = ctx.getBean(""chinese"");

解决方案三:
Spring的2.5版本中提供了一种:p名称空间的注入:

 * 引入p名称空间:<beans xmlns=""http://www.springframework.org/schema/beans""          xmlns:p=""http://www.springframework.org/schema/p""       xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""       xsi:schemaLocation=""http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"">* 使用p名称空间注入:* 语法格式:* p:属性名=””* p:属性名-ref=””    <bean id=""car2"" class=""com.itheima.spring.demo5.Car2"" p:name=""长安奔奔"" p:price=""40000""/><bean id=""employee"" class=""com.itheima.spring.demo5.Employee"" p:name=""隔壁老王"" p:car2-ref=""car2""></bean>
时间: 2024-11-02 03:00:11

编码-关于spring xml配置中的c命名空间和p命名空间的问题的相关文章

Spring XML配置十二个最佳实践

xml     在这篇文章里,对于Spring XML的配置,我将向你展示12种比较好的实践.其中的一些实践不仅是好的实践,更是必要的实践.除此以外,还有其他因素,例如领域模型的设计,都能影响XML的配置,但是这篇文章重点研究XML配置的易读性和易管理性. 1.不要使用autowiring Spring可以通过类的自省来自动绑定其依赖部分,使得你不必明确指明bean的属性和构造器.Bean的属性可以通过属性名称或类型匹配来实现自动绑定.构造器通过类型匹配来实现自动绑定.你甚至可以指定自动检测自动

最小化Spring XML配置

spring提供了几种技巧,可以帮助我们减少XML的配置数量: 1.自动装配(autowiring)有助于减少甚至消除配置<property>元素和<constructor-arg>元素,让Spring自动识别如何装配Bean的依赖关系. 2.自动检测(autodiscovery)比自动装配更进了一步,让Spring能够自动识别哪些类需要被配置成Spring Bean,从而减少对<bean>元素的使用.   1.1.自动装配Bean属性 1.1.1.4种类型的自动装配

struts2 xml配置中json格式数据

问题描述 struts2 xml配置中json格式数据 clientList[d+].clientaway.w+ 什么意思 可以带clientaway这个实体类中的所有属性吗 解决方案 这是正则表达式d+匹配数字w+匹配文本 clientList[d+].clientaway.w+ 可以匹配 clientList[123].clientaway.abc 之类的字符串

Spring 配置中 bean 的 class 使用工厂 Bean 的含义解析

Spring 配置中 bean 的 class 使用工厂 Bean 的含义解析 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. <bean id="studentMapper&q

java实现Spring在XML配置java类的方法_java

1. 创建自己的bean文件:beans.xml <?xml version="1.0" encoding="UTF-8"?> <busi-beans> <beans> <bean id="SysHelloImpl" type="com.cxm.test.SysHello"> <desc>test</desc> <impl-class>com.

详解Java的MyBatis框架与Spring框架整合中的映射器注入_java

MyBatis-Spring允许你在Service Bean中注入映射器.当使用映射器时,就像调用DAO那样来调用映射器就可以了,但是此时你就不需要进行任何DAO实现的编码,因为MyBatis会为你进行. 使用注入的映射器,你的代码就不会出现任何MyBatis-Spring依赖和MyBatis依赖.在我们的应用中有这样一个简单的映射器.你也应该知道映射器仅仅是一个接口: public interface UserMapper { User getUser(String userId); } 这是

总结Spring中XML配置的十二个最佳实践

Spring是一个强大的JAVA应用框架,广泛地应用于JAVA的应用程序.为PlainOldJavaObjects(POJOs)提供企业级服务.Spring利用依赖注入机制来简化工作,同时提高易测性.Springbeans及依赖,以及beans类所需的服务都在配置文件中进行了详细的说明,这个配置文件是典型的XML格式.但是它既冗长又不实用.对于需要定义大量Springbeans的大工程来说,我们难以阅读和管理它. 在这篇文章里,对于SpringXML的配置,我将向你展示12种比较好的实践.其中的

Spring中XML配置的12个技巧

Spring利用依赖注入可以获得简单而有效的测试能力.Spring beans,依赖关系,以及服务所需要的bean都将在配置文件中予以描述,配置文件一般采用XML格式.然而XML配置文件冗长而不易使用,在你进行一个使用了大量bean的大项目中它将变得难以阅读和控制. 在这篇文章中我将给你展示12种的有关Spring XML配置文件的最佳技巧.请注意另外一些因素,例如域模型的设计,会影响到XML配置,但是这篇文章更关注于XML配置的可读性和可操控性. 1.避免使用自动装配 Spring可以通过be

Spring中bean的基本xml配置

xml   在spring容器内拼凑bean叫作装配.装配bean的时候,你是在告诉容器,需要哪些bean,以及容器如何使用依赖注入将它们配合在一起.    理论上,bean装配可以从任何资源获得,包括属性文件,关系数据库等,但xml是最常见的spring 应用系统配置源.Spring中的几种容器都支持使用xml装配bean,包括:    XmlBeanFactory ,    ClassPathXmlApplicationContext ,    FileSystemXmlApplicatio