maven解析xml+测试test+注解
条件:maven项目
测试图:


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

一、解析XML文件方式
在main目录下有java、resources、webapp(没有就创建)

在java目录下创建源代码

Apple类
package com.wbg.entity;
public class Apple {
public void desc(){
System.out.println("我是苹果");
}
}
Shop接口
package com.wbg.ioc;
public interface Shop {
Object getBen(String name);
}
BeanShop接口
package com.wbg.ioc; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; import javax.xml.transform.sax.SAXResult;
import java.net.URL;
import java.util.List; public class BeanShop implements Shop{ public BeanShop(String configXML){
//创建SAXReader对象
SAXReader saxReader=new SAXReader();
//获取XML文件路径
URL url= this.getClass().getClassLoader().getResource(configXML);
try {
//生成文档对应实体
Document document=saxReader.read(url); List<Element> 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();
} }
@Override
public Object getBen(String name) {
return null;
}
}
在resources目录下创建xml文件

xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<beans>
<bean id="apple" class="com.wbg.fruit.Apple"></bean>
<bean id="banana" class="com.wbg.fruit.Banana"></bean>
<bean id="pear" class="com.wbg.fruit.Pear"></bean>
</beans>
在test文件下创建java目录,进行刷新下


在pom文件下加入dom4j包
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.1</version>
</dependency>

进行添加测试



创建成功

进行测试
@Test
public void getBen() {
BeanShop beanShop=new BeanShop("fruit.xml");
}

成功

项目下载地址:https://github.com/weibanggang/javaXMLTest
二、使用注解方式
首先在pom文件中加入reflections
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.10</version>
</dependency>

在annot包中创建一个注释
package com.wbg.annot; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; @Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Fruit {
String value() default "";
int count() default 0;
}

在ioc中创建BeanAnnoShop类继承Shop接口
BeanAnnoShop类
package com.wbg.ioc; import com.wbg.annot.Fruit;
import org.reflections.Reflections; import java.util.HashMap;
import java.util.Map;
import java.util.Set; public class BeanAnnoShop implements Shop{
private static Map<String,Object> map=new HashMap<>();
public BeanAnnoShop(){
Reflections reflections=new Reflections("com.wbg");
Set<Class<?>> 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();
}
}
}
@Override
public Object getBen(String name) {
return map.get(name);
}
}

进行添加测试类



添加成功,输入测试
BeanAnnoShop beanAnnoShop=new BeanAnnoShop();
Apple apple= (Apple) beanAnnoShop.getBen("apple");
apple.desc();

完成

maven解析xml+测试test+注解的更多相关文章
- 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
- 四种生成和解析XML文档的方法详解
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
- DOM生成XML文档与解析XML文档(JUNIT测试)
package cn.liuning.test; import java.io.File; import java.io.IOException; import javax.xml.parsers.D ...
- 史上最全的maven pom.xml文件教程详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- java生成解析xml的另外两种方法Xstream
Xstream生成和解析xm和JAXB生成和解析xml的方法. 一,Xstream Xstream非jdk自带的,需要到入Xstream-1.4.3.jar和xpp3_min-1.1.4.jar 1. ...
- Jaxb解析xml准换为javabean
先说下这个的背景吧,前些日子,有个以前的小同事说刚接触webservice,想解析下xml,记得我学的时候还是dom4j,sax的解析方式,最近看别人的代码用的jaxb的方式,觉得注解起来很简练,所以 ...
- webservice04#对象与xml转换-jaxb#Stax解析xml#新建修改xml
1,Student类 package com.yangw.xml; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement / ...
- dom解析xml随笔
1.dom解析jar包准备: dom解析需用到dom4j的jar包,比如我在项目中用到的的是dom4j-1.6.1jar,因为项目用的是MAVEN,所以可直接到maven中央库去搜索相关pom坐标配置 ...
- (转)Maven pom.xml 配置详解
背景:maven一直感觉既熟悉又陌生,归根结底还是自己不太熟. 1 什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者 ...
随机推荐
- [转]href="#"与javascript:void(0)的区别
本文转自:http://www.cnblogs.com/suizhikuo/p/3928411.html 如果我们想把a标签中的链接置成空链接,我们一般会用两种方法: 1 <a href=&qu ...
- (转)shell解析命令行的过程以及eval命令
shell解析命令行的过程以及eval命令 本文说明的是一条linux命令在执行时大致要经过哪些过程?以及这些过程的大致顺序. 1.1 shell解析命令行 shell读取和执行命令时的大致操作过 ...
- 【LDAP】LDAP 中 CN, OU, DC 的含义
1. LDAP的存储规则 区分名(DN,Distinguished Name) 和自然界中的树不同,文件系统/LDAP/电话号码簿目录的每一片枝叶都至少有一个独一无二的属性,这一属性可以帮助我们来区别 ...
- stm32 外部中断学习
今天我们看看STM32的外部中断实验. STM32 供 IO 口使用的中断线只有 16 个,但是 STM32 的 IO 口却远远不止 16 个,那么 STM32 是怎么把 16 个中断线和 IO 口一 ...
- pat1086. Tree Traversals Again (25)
1086. Tree Traversals Again (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
- PHPcms的安装步骤
http://www.phpcms.cn 制作良好习惯: 1.备份 2.随时保存 3.注释 在自己的PHP环境里 简历一个文件夹 比如命名为YiNong 访问安装地址,http://localhost ...
- C#天气预报程序
首先要引用这个服务,http://www.webxml.com.cn/Webservices/WeatherWebService.asmx 出现对话框后,把中央气象的服务网址添加到里面 选择高级, 添 ...
- PS基础,数学,语文
PS基础(修图) 污点修复画笔工具---设置画笔大小---设置类型(内容识别)---修改图片---完成. 修复画笔工具---设置画笔大小---设置源(取样)---修改图片---完成. 修补工具---设 ...
- powerdesigner低版本打开高版本方式为只读导致无法保存PD只读read-only-mode
由于版本号不一致 打开PD文件后提示: 点击[确定]后打开,点击[取消]后打不开 但打开后修改完毕保存提示: 解决办法: pdm文件实际上是个xml文件,直接用文本编辑器打开该文件修改版本号即可 把根 ...
- ANDROID_HOME is not set and "android" command not in your PATH解决
使用nodejs安装cordova后在项目里面添加平台时出现错误: 原因就是没有配环境变量 使用phonegap开发不仅要配JDK环境变量,还要配ADT环境变量,出现这个错误很显示就是没配ADT环境变 ...