//通过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());
}
}
get set 注解 以及public属性 依赖注入该怎么写
最新推荐文章于 2022-08-04 19:03:33 发布