【java_基础深入】注解注入配置 / Properties读取配置 / ResourceBundle读取配置

41 篇文章 6 订阅

注解注入

/**
 * 生命周期问题:
 *  注解的默认生命周期是保留到字节码阶段
 *  通过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");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值