//通过public属性 注解去 注入
public static void diDaoFiled(Object object){
Field[] fields = object.getClass().getFields();
for(Field field : fields){
//System.out.println(field.getName());
if(field.isAnnotationPresent(ShopDi.class)){
ShopDi sd = field.getAnnotation(ShopDi.class);
String mn = sd.value();
//如果注入的值是空值 则取set方法来完成注入
if(mn == null || "".equals(mn.trim())){
mn = field.getName();
}
//调用工厂获取dao的对象
Object o = DaoUtil.createDaoFactory().getDao(mn);
try {
field.set(object,o);
} catch (illegalaccessexception e) {
e.printstacktrace();
}
}
}
}
//get set方法 注解依赖注入
public static void diDaoNew(Object object){
Method[] ms = object.getClass().getDeclaredMethods();
for(Method m : ms){
if(m.isAnnotationPresent(ShopDi.class)){
ShopDi sd = m.getAnnotation(ShopDi.class);
String mn = sd.value();
//如果注入的值是空值 则取set方法来完成注入
if(mn == null || "".equals(mn.trim())){
mn = m.getName().substring(3);
mn = mn.substring(0,1).toLowerCase()+mn.substring(1);
}
//调用工厂获取dao的对象
Object o = DaoUtil.createDaoFactory().getDao(mn);
//通过set方法设置对象
try {
//通过method 来完成注入 m是set方法 调用者是this 参数 是 从工厂中获取的dao
m.invoke(object,o);
} catch (illegalaccessexception e) {
e.printstacktrace();
} catch (InvocationTargetException e) {
e.printstacktrace();
}
}
}
}
//get set 方法依赖注入
public static void diDao(Object object){
//获取自己声明的方法 判断方法中的set方法 如果有就对这个方法对象的注入
Method[] ms = object.getClass().getDeclaredMethods();
for(Method m :ms){
//获取方法名称
String mn = m.getName();
//是否是set方法
if(mn.startsWith("set")){
//获取dao名称
mn = mn.substring(3);
mn = mn.substring(0,1).toLowerCase()+mn.substring(1);
//调用工厂获取dao的对象
Object o = DaoUtil.createDaoFactory().getDao(mn);
//通过set方法设置对象
try {
//通过method 来完成注入 m是set方法 调用者是this 参数 是 从工厂中获取的dao
m.invoke(object,o);
} catch (illegalaccessexception e) {
e.printstacktrace();
} catch (InvocationTargetException e) {
e.printstacktrace();
}
}
//System.out.println(m.getName());
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。