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("我是苹果");
    }
}
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();

 

 完成

原文地址:https://www.cnblogs.com/weibanggang/p/9756454.html