黑马程序员技术交流社区

标题: java基础--注解练习2 [打印本页]

作者: 周发建    时间: 2016-3-29 10:26
标题: java基础--注解练习2
(一)案例1-用属性的注解获取链接池
//用注解的方式注入配置
@Retention(RetentionPolicy.RUNTIME)
@interface Inject{
        String driverClass();
        String jdbcUrl();
        String user();
        String password();
}
class BookDao22{
        private ComboPooledDataSource ds;
       
        @Inject(driverClass="com.mysql.jdbc.Driver",jdbcUrl="",user="",password="")
        public void setDs(ComboPooledDataSource ds){
                this.ds = ds;
        }
}
class DaoFactory{
        BookDao22 dao = new BookDao22();
        //在返回这个Dao之前,需要注入一个 链接池
        public BookDao22 getBookDao(){
                //解析出Dao的所有属性
                try {
                        BeanInfo info = Introspector.getBeanInfo(dao.getClass(),Object.class);
                        PropertyDescriptor[] pds = info.getPropertyDescriptors();
                        for(int i=0;pds!=null&&i<pds.length;i++){
                                //得到Bean的每一个属性描述器
                                PropertyDescriptor pd = pds;
                                Method set = pd.getWriteMethod();  //得到相应属性的set方法
                               
                                Inject inject = set.getAnnotation(Inject.class);
                                if(inject == null){
                                        continue;
                                }
                                //方法上有指定的注解,则用注解配置的信息创建一个链接池
                                Class propertyType = pd.getPropertyType();
                                DataSource ds = (DataSource) createDataSourceByinject(inject, propertyType.newInstance());
                                set.invoke(dao, ds);
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }
               
                return dao;
        }








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2