黑马程序员技术交流社区
标题: 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 |