Spring main方法中如何调用Dao层和Service层的方法
Spring main方法调用Dao层和Service层的方法
在web环境中,一般serviceImpl中的dao之类的数据库连接都由容器启动的时候创建好了,不会报错。
但是在main中,没有这个环境,所以需要获取环境:
ApplicationContext ctx = new FileSystemXmlApplicationContext("src/applicationContext.xml"); PianoServiceImpl pianoService = (PianoServiceImpl) ctx.getBean("pianoServiceImpl"); //然后再调用方法 return pianoService.getPriceByBrand(brand);
如何在普通类中直接访问service层或dao层
最近遇到一个问题,如何在工具类中去访问dao层与service层的方法,因为可能本人底子比较薄弱,一开始未想到错误点在哪,后来debug才发现我的service或 dao 都是空的。
因为平时在调用service层时都是在controller中,有配置扫描注入,spring会根据配置自动注入所依赖的服务层。
但因我们写的工具类不属于controller层,所以当所写接口需要调用服务层是,常常会为NULL。
下面 我直接来分享自己的解决方案:
第一种方案
写个方法 implements ApplicationContextAware 接口
然后在你的工具类中
ApplicationContext appCtx = SpringContextUtil.getApplicationContext(); StatusMapper statusMapper = (StatusMapper)appCtx.getBean(StatusMapper.class);
这样直接调用就好
第二种方案
网上看到的,未验证过
1.将此工具类加上@Component注解
2.将所需调用的服务类设置成静态属性,并通过方法直接将服务层设置成工具类自己的属性即可。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java原生服务器接收上传文件 不使用MultipartFile类
这篇文章主要为大家详细介绍了Java原生服务器接收上传文件,不使用MultipartFile类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2019-09-09SpringBoot v2.2以上重复读取Request Body内容的解决方案
这篇文章主要介绍了SpringBoot v2.2以上重复读取Request Body内容的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-10-10RabbitMQ,RocketMQ,Kafka 事务性,消息丢失,消息顺序性和消息重复发送的处理策略问题
这篇文章主要介绍了RabbitMQ,RocketMQ,Kafka 事务性,消息丢失,消息顺序性和消息重复发送的处理策略,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-03-03springboot+redis+阿里云短信实现手机号登录功能
这篇文章主要介绍了springboot+redis+阿里云短信实现手机号登录功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2024-01-01
最新评论