get set 注解 以及public属性 依赖注入该怎么写
发布时间:2020-12-14 05:08:09 所属栏目:百科 来源:网络整理
导读://通过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)){
//通过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());
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |