IT源码网

maven解析xml+测试test+注解

developer 2021年02月13日 编程语言 421 0

条件: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("我是苹果"); 
    } 
}
View Code

Shop接口

package com.wbg.ioc; 
 
public interface Shop { 
    Object getBen(String name); 
}
View Code

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>
View Code

在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; 
}
View Code

 在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); 
    } 
}
View Code

进行添加测试类

 添加成功,输入测试

 BeanAnnoShop beanAnnoShop=new BeanAnnoShop(); 
        Apple apple= (Apple) beanAnnoShop.getBen("apple"); 
        apple.desc();

 

 完成

 

评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!