• 反射+工厂模型+Properties


    通过Properties类从文件中读取配置信息,从而可以避免大量的代码修改。

    1、新建fruit.properties(文件名任意,路径在项目默认目录下),并写入内容:

    1 apple=properties.Apple
    2 banana=properties.Banana

    2、编写Fruit接口:

    1 public interface Fruit {
    2     void eat();
    3 }

    3、Fruit接口的实现类:

    public class Banana implements Fruit{
    
        @Override
        public void eat() {
            // TODO Auto-generated method stub
            System.out.println("Banana!");
        }
        
    }
    1 public class Apple implements Fruit{
    2 
    3     @Override
    4     public void eat() {
    5         // TODO Auto-generated method stub
    6         System.out.println("Apple!");
    7     }
    8 
    9 }

    4、FruitFactory工厂:

     1 public class FruitFactory {
     2     public static Fruit getFruitInstance(String className) {
     3         Fruit fruit = null;
     4         try {
     5             fruit = (Fruit) Class.forName(className).newInstance();
     6         } catch (Exception e) {
     7             // TODO Auto-generated catch block
     8             e.printStackTrace();
     9         }
    10         return fruit;
    11     }
    12 }

    5、主类:

    public static void main(String[] args) {
            FruitFactory.getFruitInstance(Apple.class.getName()).eat();
            Properties pro = init();
            // Properties根据键值对获取信息
            Fruit f = FruitFactory.getFruitInstance(pro.getProperty("banana"));
            f.eat();
            System.out.println(pro.getProperty("iapple"));
        }
    
        static Properties init() {
            // 新建Properties对象
            Properties pro = new Properties();
            File file = new File("fruit.properties");
            if (file.exists()) {
                try {
                    pro.load(new FileInputStream(file));
                    pro.setProperty("iapple", "properties.iApple");
                    // 根据键值对将数据写入文件中
                    pro.store(new FileOutputStream(file), "iapple");
                    // pro.clear();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } else {
                pro.setProperty("apple", "properties.Apple");
                // pro.loadFromXML(new FileInputStream(""));
            }
            return pro;
        }

    运行结果:

    Banana!
    properties.iApple

    可以用Properties#store(InputStream in,String key)将数据写入指定文件中。用Properties#clear()清除文件中所有数据。

    通过Properties获取JVM配置信息:

    1 Properties pro= System.getProperties();
    2 pro.list(System.out);

    以键值对形式显示Properties文件中所有配置信息:

     1 void showDetail() {
     2         Properties pro = System.getProperties();
     3         pro.list(System.out);
     4         Enumeration<?> enu = pro.propertyNames();
     5         while (enu.hasMoreElements()) {
     6             String key = (String) enu.nextElement();
     7             String value = pro.getProperty(key);
     8             System.out.println("key:" + key + "  value:" + value);
     9         }
    10     }

    java中Properties类的操作:http://www.cnblogs.com/bakari/p/3562244.html

    java读取Properties文件的六种方法:http://blog.csdn.net/Senton/article/details/4083127

  • 相关阅读:
    系统的访问
    tomcat 和 数据库的连接
    实体类编写规则
    webmagic 爬虫
    docker安装官方Redis镜像并启用密码认证
    解决Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. 问题
    Springboot配置druid报错Failed to bind properties under 'spring.datasource' to javax.sql.DataSource
    阿里云centos7.6搭建SVN远程仓库和Git远程仓库
    java 三大特性封装继承多态
    使用easyui tab需要注意的问题
  • 原文地址:https://www.cnblogs.com/mada0/p/4724718.html
Copyright © 2020-2023  润新知