纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

SpringBoot类调用service及Spring操作 SpringBoot在自定义类中调用service层等Spring其他层操作

GeorgeShaw1   2021-06-09 我要评论
想了解SpringBoot在自定义类中调用service层等Spring其他层操作的相关内容吗GeorgeShaw1在本文为您仔细讲解SpringBoot类调用service及Spring操作的相关知识和一些Code实例欢迎阅读和指正我们先划重点:SpringBoot,自定义类,调用service层,Spring层下面大家一起来学习吧

背景:

做了一个TCP服务器来接入智能设备然后需要将设备实时发送的定位等关键信息存储到数据库

为了考虑将来可能对外提供rest接口采用将TCP服务器集成到SpringBoot框架当然也是为了能最快利用mybatis框架实现数据访问然后依次解决了如何启动如何注销等各种问题然后在TCP服务器消息处理时需要写数据库直接调用DAO层编译报错

改为调用Service层编译正常运行到调用的地方报空指针异常跟踪到异常位置发现service为空也就是按照之前controller层通过@Autowired注入service层失效

解决方案:

1.上代码

@Component
public class ServerHandler extends IoHandlerAdapter {
    @Autowired
    protected HealthDataService healthDataService;
    private static ServerHandler  serverHandler ;
    @PostConstruct //通过@PostConstruct实现初始化bean之前进行的操作
    public void init() {  
        serverHandler = this;  
        serverHandler.healthDataService = this.healthDataService;        
        // 初使化时将已静态化的testService实例化
    }  
    //测试调用
    public void test(){
        serverHandler .healthDataService.<你的service层方法>;
    }

2.说明:

将需要调用Spring的Service层的类通过@Component注解为组件加载

同样通过@Autowired获取Service层的Bean对象

为类声明一个静态变量方便下一步存储bean对象

划重点:通过注解@PostConstruct 在初始化的时候初始化静态对象和它的静态成员变量healthDataService原理是拿到service层bean对象静态存储下来防止被释放

那些趟过的坑:

刚开始调用的时候总觉得很简单以前springmvc写个配置将对象标注为bean就可以随意调用Spring IOC容器的beans了但是这是SpringBoot估计还是有区别一次试验了百度出来的前三页帮助基本没有成功的包括:

1)将工具类申明为spring组件如@controller @compent 等在spring自动扫描包设置中将工具类所在的包加进来 无效

2)new一个service 无效

springboot多个service互相调用的事务处理

想在一个service的方法A中调用另一个service的方法B方法A和方法B均存在数据库插入操作并且@Transaction注解也都加了但是当B方法中抛出异常时A中的插入语句还是能够执行成功

注解配置如下:

@Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED)

百思不得其解再查找了相关资料后问题还是出在@Transaction注解的配置上需要配置异常回滚

@Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED,rollbackFor = Exception.class)

这样当B方法中抛出异常时A中的操作也会进行回滚事务就会起到控制作用

以上为个人经验希望能给大家一个参考也希望大家多多支持


相关文章

猜您喜欢

  • java线程阻塞问题 java调用process线程阻塞问题的解决

    想了解java调用process线程阻塞问题的解决的相关内容吗遗失的岁月在本文为您仔细讲解java线程阻塞问题的相关知识和一些Code实例欢迎阅读和指正我们先划重点:java阻塞,调用process,java线程阻塞下面大家一起来学习吧..
  • spring方法级参数校验 浅谈spring方法级参数校验(@Validated)

    想了解浅谈spring方法级参数校验(@Validated)的相关内容吗Leonarde_WP在本文为您仔细讲解spring方法级参数校验的相关知识和一些Code实例欢迎阅读和指正我们先划重点:spring方法,参数校验,@Validated下面大家一起来学习吧..

网友评论

Copyright 2020 www.fresh-weather.com 【世纪下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式