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来实现.主要描述了项目:包括配置文件:开发者 ...
随机推荐
- ubuntu15.04 xampp 安装memcache
要ThinkPHP3.2里由于要用到 memcache 缓存, 如果没有配置memcache,会报错,说系统支持 memcache. 所在配置的时候有点问题,现在解决了,现把它记录下来,以便以后查阅之 ...
- window对象的事件:onresize、onpageshow、onload
onresize事件非常容易理解: 即当窗口或者框架的大小发生变化时,就会触发此事件. 实例demo onpageshow事件是当用户浏览网页时触发的. onpageshow 事件类似于 onload ...
- 牛客网Java刷题知识点之字节缓冲区练习之从A处复制文本文件到B处(BufferedReader、BufferedWriter)、复制文本文件的原理图解
不多说,直接上干货! CopyTextByBufTest.java package zhouls.bigdata.DataFeatureSelection.test; import java.io.B ...
- javascript典型实例
你真的已经搞懂JavaScript了吗? 昨天在著名前端架构师Baranovskiy的博客中看到一个帖子<So, you think you know JavaScript?> 题目一 ...
- rsync+inotify实现数据的实时同步更新
rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样 ...
- pat1088. Rational Arithmetic (20)
1088. Rational Arithmetic (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue F ...
- C#取得程序的根目录以及判断文件是否存在
一:获取根目录的方法 取得控制台应用程序的根目录方法方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径方法2.AppDomain.CurrentDo ...
- react做股票、期货交易遇到的问题(不完全是react)及解决方法。
公司项目主要是做股票及期货行情展示及交易,h5相应的做了一些功能---可以看行情图及模拟交易,实盘交易存在一定的风险,老板希望做自己的产品,这样h5就尴尬了,不过没关系,项目里还是有一定技术含量的-- ...
- js 浮点数计算Bug
之前在写项目时候,直接对带小数点的数据进行运算,发现所得到的值并不是自己想要的. 经过一系列学习后,发现在JavaScript中,浮点数运算都是先转换成二进制,在转成二进制的时候有出现无限循环小数,故 ...
- Vue-Cli 3 引入 SCSS 全局变量
首先创建一个全局变量文件 global.scss $theme-color: #efefef; 编辑vue.config.js module.exports = { // ... css: { loa ...