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来实现.主要描述了项目:包括配置文件:开发者 ...
随机推荐
- 网页console console.log 用法 Chrome F12
#########sample 0 https://www.cnblogs.com/xiaozong/p/4961929.html https://blog.csdn.net/shanliangliu ...
- WCF rest 的帮助页面和缓存机制
打开vs2010 在工具选项中选择扩展管理器——联机库 安装WCF REST Service Template 40(CS)模板 安装后新建wcf服务应用程序,删除默认建立的文件. 新建RestWcf ...
- HTML6即将到来,你没有看错是HTML6
HTML6提案1:对视频对象的更多控制 我们可能永远不会解决与压缩编解码器的争斗,但我们可以与之配合.不同的压缩算法可能需要更多的工作来实现,但是它们提供竞争.能对展现在页面上的视频帧提供更多控制的方 ...
- 移动端的click点透问题
在移动端开发中,有时会出现click点透的问题. 一.什么是click点透 以下情况,在B元素上有半透明红色遮盖层A,黄色B元素内有可点击链接C. tips:以下举例仅针对webkit内核浏览器,所有 ...
- Linux pid与tgid概念
在Linux操作系统层面,线程其实只是特殊的进程,最特殊之处在于跟其他“线程进程“共享内存(包括代码段.数据段等,但不共享栈). 这两天看书老是看到线程组(thread group),但是线程组是什么 ...
- DEDECMS v5.7 完美实现导航条下拉二级菜单
一.引言 好多人都问,织梦的下拉导航怎么做呢?其实很简单!即使你对代码一点也不熟悉,没关系! 按照我的步骤走!记住一步也不能错哦! 二.实现过程 1.首先: 将下面这段代码贴到templets\def ...
- .NET面试题3
1.什么是拆箱和装箱? 2.什么是箱子? 3.箱子放在哪里? 4.装箱和拆箱有什么性能影响? 5.如何避免隐身装箱? 6.箱子的基本结构? 7.装箱的过程? 8.拆箱的过程? 9.下面这段代码输出什么 ...
- css内容整理2
10.6.css伪类.伪元素 伪类用于向某些选择器添加特殊效果:伪元素用于将特殊的效果添加达到某选择器. 区别:伪类的效果可通过添加一个实际的类达到,用::伪元素效果则需要添加一个实际的元素,用:: ...
- struts2的常量
常量名 常量值 说明 struts.i18n.encoding UTF-8 应用中使用的编码 struts.objectFactory.spring.autoWire name 和spring框架整合 ...
- js获取省市
前台代码 @{ IList<Provinces> allProvinces = ViewBag.AllProvinces; IList<Districts> allDistri ...