【java_基礎深入】註解注入配置 / Properties讀取配置 / ResourceBundle讀取配置

註解注入

/**
 * 生命週期問題:
 *  註解的默認生命週期是保留到字節碼階段
 *  通過Retention元註解指定註解的生命週期
 *  1. SOURCE 保留到源碼階段
 *  2. CLASS 保留到字節碼階段
 *  3. RUNTIME 保留到運行時
 */
@Retention(RetentionPolicy.RUNTIME)
public @interface JdbcInfo {
    String username() default "root"; // 設置默認配置,可以覆蓋
    String password();
    String url();
    String driverClassName() default "com.mysql.jdbc.Driver";
}
@JdbcInfo(password = "root", url = "jdbc:mysql:///practice")
public class JDBCUtil {
    private static String url;
    private static String user;
    private static String password;
    private static String driverClassName;
    static {
        //1.獲取當前類上的名爲JDBCInfo的註解對象
        Class clazz = JDBCUtil.class;
        JdbcInfo jdbcInfo = (JdbcInfo) clazz.getAnnotation(JdbcInfo.class);
        
        //獲取註解對象的各個屬性值, 可以後續使用DriverManager獲取數據庫連接
        user = jdbcInfo.username();
        password = jdbcInfo.password();
        url = jdbcInfo.url();
        driverClassName = jdbcInfo.driverClassName();
        
        //註冊驅動
        try {
            Class.forName(driverClassName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

Properties讀取配置

    private static DataSource dataSource;
    static {
        //通過工廠類創建Druid連接池
        Properties properties = new Properties();
        // 拿到類加載器的目錄就是src目錄,druidconfig.properties應該處於src目錄下
        // 當存在resources目錄,該目錄下也成爲classpath,druidconfig.properties也可以處於該目錄下
        InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("druidconfig.properties");
        try {
            properties.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try {
        	// 從properties文件獲取Druid數據庫連接池
            dataSource = DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

ResourceBundle讀取配置

		// 文件名是beans.properties, 注意參數只填入"beans"
        ResourceBundle bundle = ResourceBundle.getBundle("beans");
        String className = bundle.getString("className");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章