springboot controller调用controller,springboot无法访问controller
00-1010非控制器类引用服务问题的解决方案。大致代码如下:如何在非控制器层调用服务层服务,通过init方法注入服务。调用方法如下
00-1010项目需要采用套接字通信机制。因为此方法不是在control类中编写的,所以调用service类时总是会报告java.lang.NullPointerException错误。
00-1010 1.首先,将@Autowired注释注入服务或映射器接口。
@ Autowired PaUserService PaUserService;2.设置静态变量。
私有静态DomSocketUtils domSocketUtils3.初始化静态变量,并注意添加@PostConstruct注释。
@PostConstruct //在依赖注入完成后需要执行的方法上使用,以执行任何初始化public void init(){ domsocketutils=this;}
目录
@组件()公共类DomSocketUtils扩展服务器套接字{ @ Autowired PaUserService PaUserService;私有静态最终int SERVER _ PORT=8875//服务端端口私有静态DomSocketUtils私有服务器套接字服务器;//@ post构造公共DomSocketUtils()抛出异常{//SERVER=新服务器套接字(SERVER _ PORT);//load();} @PostConstruct //用于在依赖关系注入完成之后需要执行的方法上,以执行任何初始化public void init(){ domSocketUtils=this;} /** * 使用线程处理每个客户端传输的文件* @ throws Exception */@ Async( taskExexutor )public void load()throws Exception { SERVER=new SERVER socket(SERVER _ PORT);while(true){ system。出去。println(-等待连接- );socket socket=服务器。接受();//接收连接服务端的客户端对象系统。出去。println( IP 套接字。getine地址()已连接);新线程(新传输(套接字),"线程1")。start();//每接收到一个窝就建立一个新的线程来处理它系统。出去。println(线程。当前线程().getName());} } /** * 处理客户端传输过来的文件线程类*/类传输实现可运行的{私有套接字套接字私有数据输入流阴间私有文件输出流fos公共传输(插座插座){这个。Socket=插座;} @覆盖public void run(){ try { dis=new data inputstream(socket。getinputstream());//文件名和长度字符串imageurl=字符串fileName=dis。读取utf();//获取文件名长文件长度=dis。read long();文件目录=新文件( e ://);//创建绝对路径如果(!目录。exists()){目录。mkdir();} File File=new File( e ://);fos=新文件输出流(基本路径);//存入文件//开始接收文件字节[]字节=新字节[1024];int length=0;而((长度=dis.read(bytes,0,bytes.length))!=-1) { fos.write(字节,0,长度);福斯。flush();}文件file1=新文件(base path);//读取文件DicomInputStream dis=新的DicomInputStream(文件1);属性FMI=dis。readfiletainformation();attrs=dis.readDataset(-1,-1);PaUser role=domsocketutils。pauserservice。getpauserrole 1(属性。getstring(标记。患者id));//验证是否存在该病人System.out.println(========文件接收成功[文件名:文件名]);} catch(Exception e){ e . printstacktrace();}最后{试试{ if(fos!=null)fos。close();如果(dis!=null)dis。close();} catch(Exception e){ e . printstacktrace();} } } }注:插座文件接收的是医学数字影像和通讯文件
解决非controller类引用service问题
解决办法
@ Slf4j @组件公共类服务器IOT { @ Resource private EasybandDateService EasybandDateService;@PostConstruct //通过@PostConstruct实现初始化豆之前进行的操作public void init(){服务器IOT=this;服务器IOT。easybanddateservice=this。easybanddateservice//初使化时将已静态化的easybandDateService实例化}}
总的代码如下
在前面添加当前类就可以了
布尔存储=服务器IOT。easybanddateservice。保存(easybandDate);以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行它.
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。