龙哥网

龙哥网

Spring main方法中如何调用Dao层和Service层的方法_java
2022-03-01

目录
  • Spring main方法调用Dao层和Service层的方法
  • 如何在普通类中直接访问service层或dao层
    • 第一种方案
    • 第二种方案

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.将所需调用的服务类设置成静态属性,并通过方法直接将服务层设置成工具类自己的属性即可。

免责声明
本站部分资源来源于互联网 如有侵权 请联系站长删除
龙哥网是优质的互联网科技创业资源_行业项目分享_网络知识引流变现方法的平台为广大网友提供学习互联网相关知识_内容变现的方法。