zoukankan      html  css  js  c++  java
  • 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();

     

     完成

  • 相关阅读:
    LeetCode: Longest Valid Parentheses 解题报告
    LeetCode: Generate Parentheses 解题报告
    Leetcode: LRU Cache 解题报告
    LeetCode: Maximal Rectangle 解题报告
    LeetCode: Min Stack 解题报告
    LeetCode: Restore IP Addresses 解题报告
    LeetCode: Longest Common Prefix 解题报告
    LeetCode: Regular Expression Matching 解题报告
    Python——rrdtool模块的安装
    python-xlsxwriter模块绘制表格
  • 原文地址:https://www.cnblogs.com/weibanggang/p/9756454.html
Copyright © 2011-2022 走看看