java反射方法时,方法里面的需要其他的bean怎么注入

java反射方法时,方法里面的需要其他的bean怎么注入,第1张

首先方法要携带参数。fun(param1,param2);

最后调用fun方法时候,通过反射调用,后面携带bean实例对象 methodinvoke(obj,param1,param2)

由于在构造查询语句的时候,会拼接来自用户输入的数据,如果没有对用户输入数据作适当的过滤,用户就可以构造一些特殊的数据,通过服务器返回的错误信息来获取数据库中的信息,当然包括用户名密码类的敏感数据,甚至直接修改数据。

比如:简单的查询 sql="select from abc where a='" + x +"'";

构造特殊的x:sql="select from abc where a='" + "' having '1'='1" +"'"; //由于没有group by 语句而单独使用having ,将会出错,服务器返回错误信息,错误信息中会包括比如字段名称,数据库名称等等一些。获取这些信息后,就可以进一步构造特殊语句获取更多信息。

所以防注入的2个要点就是:过滤和屏蔽错误提示。

不知道你说的“普通的java类”是什么。

在spring里要注入的话,相应的类都要纳入spring的管理,对象由spring创建,对象从spring获取。就像你上面的BaseDaoImpl和BaseServiceImpl。

如果UserCarManager也是由spring管理的话,那同样适用@autowired就可以注入。

看你的提问,应该是指没有纳入spring管理的类如何注入spring管理的对象,这种情况可以用srping相关的静态方法达到目的。

比如:

WebApplicationContext webAppContext = WebApplicationContextUtilsgetWebApplicationContext(getServletContext());

BaseDaoImpl baseDao = (BaseDaoImpl) BeanFactoryUtilsbeanOfTypeIncludingAncestors(webAppContext, BaseDaoImplclass);

spring注入方式一般不推荐使用自动扫描的方式,因为项目比较大的时候用起来比较乱,不利于多人共同开发 以及后期维护,建议用配置文件配置注入。

这里你用了自动扫描注入,spring会先从它的配置文件中寻找,你应该是在配置文件中定义了这个接口。

以上就是关于java反射方法时,方法里面的需要其他的bean怎么注入全部的内容,包括:java反射方法时,方法里面的需要其他的bean怎么注入、java程序POSS注入,怎样测试,怎样改代码、spring注解方式在一个普通的java类里面注入dao等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10126087.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存