首页 新闻 搜索 专区 学院

这是为啥呢??大神来看看

0
悬赏园豆:80 [已解决问题] 解决于 2021-06-10 18:00

applicationContext.getBean(cls).getClass().getDeclaredFields();
//应用上下文获取的bean反射后拿不到这个类里面的属性getDeclaredFields();这个方法返
//回的属性集合并没有原本类里的属性。怎么回事??

大大滴水鱼的主页 大大滴水鱼 | 初学一级 | 园豆:137
提问于:2021-06-10 15:30

唉,算了

给我个面子 1个月前

算了算了

给我个面子 1个月前
< >
分享
最佳答案
1

因为你拿到的是代理吧,你输出class看看吧

收获园豆:70
yytxdy | 小虾三级 |园豆:1605 | 2021-06-10 16:39

是啊,从应用上下文拿的bean

大大滴水鱼 | 园豆:137 (初学一级) | 2021-06-10 16:42

那为啥代理的就没有啊

大大滴水鱼 | 园豆:137 (初学一级) | 2021-06-10 16:44

@给我个面子: 因为是代理类啊,又不是你那个bean真正的类,当然没这些属性啊

yytxdy | 园豆:1605 (小虾三级) | 2021-06-10 17:31

@yytxdy: 那就是没法通过上下文获取bean中是属性了咯?

大大滴水鱼 | 园豆:137 (初学一级) | 2021-06-10 17:35

@给我个面子: 不行,一般也没需求这么干的

yytxdy | 园豆:1605 (小虾三级) | 2021-06-10 17:37

@yytxdy:我是自定义一个注解,想给有这个注解的属性赋值。但是我不想通过setter的方法赋值,例如:Method method = cls.getMethod("set" + name, Menu.class);。method.invoke(applicationContext.getBean(cls), requestAttributes.getRequest().getSession().getAttribute("menuInfo"));

就想着用field.set(obj,value);赋值。但是拿不到属性就用不了这个方法。

大大滴水鱼 | 园豆:137 (初学一级) | 2021-06-10 17:42

@yytxdy: 大神有什么解决方发吗

大大滴水鱼 | 园豆:137 (初学一级) | 2021-06-10 17:43

@给我个面子: 那你看看@Autowired实现逻辑不就好了吗,实际上硬要取,好像也能取到,你判断下,是cglib代理的话就取父类的字段,不过这个实现就不是很优雅了,你可以参考@Autowired的实现自己实现一个

yytxdy | 园豆:1605 (小虾三级) | 2021-06-10 18:02

@yytxdy: 这个的源码是哪个class,我找不到

大大滴水鱼 | 园豆:137 (初学一级) | 2021-06-10 18:03

@给我个面子: AutowiredAnnotationBeanPostProcessor

yytxdy | 园豆:1605 (小虾三级) | 2021-06-10 18:04

@yytxdy: 好的,谢谢大神

大大滴水鱼 | 园豆:137 (初学一级) | 2021-06-10 18:04
其他回答(1)
0

报错还是拿不到呢?这个类要被spring管理。你把这个cls对应的类加上注解。

收获园豆:10
mowen285 | 园豆:334 (菜鸟二级) | 2021-06-10 16:26

不是报错,拿到bean了,是没拿到原本类里的属性

支持(0) 反对(0) 大大滴水鱼 | 园豆:137 (初学一级) | 2021-06-10 16:33

@给我个面子: 试试
Cls cls = new cls();
cls.getClass().getDeclaredFields();
你看这样能拿到嘛?

支持(0) 反对(0) mowen285 | 园豆:334 (菜鸟二级) | 2021-06-10 17:34

@mowen285: 这肯定可以呀,但是我并不想用这种,不符合我开发功能的要求

支持(0) 反对(0) 大大滴水鱼 | 园豆:137 (初学一级) | 2021-06-10 17:36

@给我个面子: //把私有属性公有化
field.setAccessible(true); 加上这个

支持(0) 反对(0) mowen285 | 园豆:334 (菜鸟二级) | 2021-06-10 17:48

@mowen285: 老哥,这中方法不符合我的需求。要符合我就不用上来问了。

支持(0) 反对(0) 大大滴水鱼 | 园豆:137 (初学一级) | 2021-06-10 17:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册