一简介
工作中,有可能遇到需要获取指定Bean的服务类执行指定方法,并不是所有的bean都需要,比如要获取某张表的表内容,表后续会新增,如果我们新增一张表,就重新写一个方法,就很不方便,可以写一个公共的方法,后续新增表并不会影响已经写好的方法。
二代码说明
1、定义接口名
我们要获取指定了datatablename的服务类信息
图1新增注解2、指定服务类注明datatablename
假设我们要获取UserServiceImpl服务类,则注明上我们指定的注解,name里是新增的数据库表名
图2指定类标注我们的注解3、通过反射获取我们指定的注解对应的类服务
图3通过反射获取标注我们注解的服务4、配置服务上下文
图4配置上下文bean5、应用
图5通过上下文获取服务类备注:在实施过程中,有人疑问,反射就可以获取到服务类了,为何还要新增上下文服务来获取服务类呢?
因为spring是容器,所有的bean都是让spring容器接管了,虽然我们通过反射可以获取到服务类,但也只是拿到了这个服务类,服务类里面其实有很大可能是注入了其他服务类,通过
Autowired注入的,这时如果用反射的服务类来执行命令,当服务类里引用的其他服务类就会报空指针null错误,所以我们通过反射拿到了这个服务类,但是还是要通过上下文的方式引用,通过上下文的方式引用的服务类,其里面再引用注入的服务类就可以获取到。三测试
查询mysql数据库里user表内容
图6获取user表内容查询mysql数据库里tb_sys_user表内容
图7获取tb_sys_user表内容后面如果要查询新增的表的内容信息,只需要在指定服务类上注明我们的datatablename注解。
本次功能主要是ssm(spring+springmvc+mybatis)架构的功能,通过mybatis查询表功能,主要有service,mapper,mapper.xml等等,每次新增表,只需要在service服务类上标注我们新增的注解datatablename,这样查询表内容这个公共方法都可以获取到新增的数据库表。