java xml解析 注解_maven解析xml+测试test+注解

条件:maven项目

测试图:

89d2b7674faeed089e413a511439eb50.png

43750663a500fd85dddc9e1ba0519bab.png

创建maven项目,在maven项目中scr目录下有main、test(没有就创建)

1c7402e3dac780d3cb1ed6d8ea30fae2.png

一、解析XML文件方式

在main目录下有java、resources、webapp(没有就创建)

120efca589a5ed709cac6bc6716d5f4f.png

在java目录下创建源代码

67a516c31060fa37797595dc668d2fa2.png

Apple类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.wbg.entity;public classApple {public voiddesc(){

System.out.println("我是苹果");

}

}

View Code

Shop接口

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.wbg.ioc;public interfaceShop {

Object getBen(String name);

}

View Code

BeanShop接口

packagecom.wbg.ioc;importorg.dom4j.Document;importorg.dom4j.DocumentException;importorg.dom4j.Element;importorg.dom4j.io.SAXReader;importjavax.xml.transform.sax.SAXResult;importjava.net.URL;importjava.util.List;public class BeanShop implementsShop{publicBeanShop(String configXML){//创建SAXReader对象

SAXReader saxReader=newSAXReader();//获取XML文件路径

URL url= this.getClass().getClassLoader().getResource(configXML);try{//生成文档对应实体

Document document=saxReader.read(url);

List list=document.getRootElement().elements();for(Element element : list) {

String id=element.attributeValue("id");

String clazz=element.attributeValue("class");

System.out.println(id);

System.out.println(clazz);

}

}catch(DocumentException e) {

e.printStackTrace();

}

}

@OverridepublicObject getBen(String name) {return null;

}

}

在resources目录下创建xml文件

6c07f060a120b49a656295f9bb0ab987.png

xml文件

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

View Code

在test文件下创建java目录,进行刷新下

c5d23cc440aa301dfc0491a1e3a9c241.png

2dc89315aa8dddfd6874154760c34e5b.png

在pom文件下加入dom4j包

org.dom4j

dom4j

2.1.1

68924ecedce5ca284dc1a896199d0b14.png

进行添加测试

0b113af10c302f963ec6aa4db2c2e99d.png

767d26f0a9ece8a6ad930fe7efd3c797.png

a1bfae92a7ebef52ea1d6dae79f7cc5c.png

创建成功

50192e05b261252551eafa9c85a5545c.png

进行测试

@Testpublic voidgetBen() {

BeanShop beanShop=new BeanShop("fruit.xml");

}

0cd0ee7231505a49e2f1898abd7504ab.png

成功

838476fd1f45f23ce2231f8fe4918aa2.png

二、使用注解方式

首先在pom文件中加入reflections

org.reflections

reflections

0.9.10

db3f30e4b817d74ccdeecaf0b662b0d0.png

在annot包中创建一个注释

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.wbg.annot;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)public @interfaceFruit {

String value()default "";int count() default 0;

}

View Code

0301d9e9083e1502e954c3164081daab.png

在ioc中创建BeanAnnoShop类继承Shop接口

BeanAnnoShop类

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.wbg.ioc;importcom.wbg.annot.Fruit;importorg.reflections.Reflections;importjava.util.HashMap;importjava.util.Map;importjava.util.Set;public class BeanAnnoShop implementsShop{private static Map map=new HashMap<>();publicBeanAnnoShop(){

Reflections reflections=new Reflections("com.wbg");

Set> classes=reflections.getTypesAnnotatedWith(Fruit.class);for (Class>aClass : classes) {

Fruit anot=aClass.getAnnotation(Fruit.class);try{

map.put(anot.value(),aClass.newInstance());

}catch(InstantiationException e) {

e.printStackTrace();

}catch(IllegalAccessException e) {

e.printStackTrace();

}

}

}

@OverridepublicObject getBen(String name) {returnmap.get(name);

}

}

View Code

2323ae81456f9139aae2c976a9cfaaff.png

进行添加测试类

2a10ce442b679c796a0d56904006199f.png

62be62fca1ef897feecdd49ff131166a.png

3b902abfde4b1ab72a7bb23712103c5d.png

添加成功,输入测试

BeanAnnoShop beanAnnoShop=newBeanAnnoShop();

Apple apple= (Apple) beanAnnoShop.getBen("apple");

apple.desc();

96f2513980297266bf3b0d7adf8f152f.png

完成

af05ad130c9ad21545ff7216294c654f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值