spring-boot-func-starter

spring-boot-func-starter 介绍

项目地址: https://gitee.com/yiur/spring-boot-func-starter

基于SpringBoot的匿名函数托管器,在springboot中可以将接口的方法进行各种操作

平时的java开发中继承接口要将接口的方法全实现,而func匿名函数托管不需要进行全部

实现可以用@FuncLambda进行单独实现,没有进行匿名实现的接口方法不能进行调用,

func匿名函数还可以动态实现接口方法,配合代码达到更多操作,此外还有函数回调的

功能,在web开发中使用func匿名函数的对象是默认调用回调方法的,你也可以通过继承

Callback接口编写自己想要的(then, error)回调方法

error目前不兼容springboot的热部署

@FuncConfiguration 匿名配置

@FuncLambda 匿名函数配置

注解模式开发

项目搭建

定义接口,此接口的方法由匿名函数代理

public interface WebInitOutInfo {

    String out(String message, String... args);

}
  • @FuncConfiguration 匿名函数的总配置
  • @FuncLambda 匿名函数
    • classFile 代理的接口
    • funcCallback 回调函数
      • callbackClass 绑定的回调函数类
@FuncConfiguration
public class WebFuncLinkConfig { @FuncLambda(classFile = WebInitOutInfo.class,
funcCallback = @FuncCallback(callbackClass = BlogCallback.class))
public String out(@FuncParameter("message") String message, @FuncParameter("args") String... args) {
return FuncString.format(message, args);
} }

回调函数实现Callback接口即可

public class BlogCallback implements Callback {

    @Override
public Object then(Object o) {
return FuncString.format("then blogCallBack:value(?)", o);
} @Override
public Object error(Exception e) {
return ((InvocationTargetException)e).getTargetException().getMessage();
} }

启动类开启匿名函数自动装配 @EnableFuncLambda

@EnableWebMvc
@EnableFuncLambda
@SpringBootApplication
public class WebBlogApplication { public static void main(String[] args) {
SpringApplication.run(WebBlogApplication.class, args);
} }

配置web进行测试,编写controller

@Controller
public class BlogController { @Autowired
public WebInitOutInfo webInitOutInfo; @ResponseBody
@RequestMapping("/replace")
public String value(String message, String... args) {
return webInitOutInfo.out(message, args);
} }

测试成功回调[http://localhost:8888/replace?message=value ? ?&args=12, hello func](http://localhost:8888/replace?message=value ? ?&args=12, hello func)

测试失败回调[http://localhost:8888/replace?message=value ???&args=12,%20hello%20func](http://localhost:8888/replace?message=value ? ??&args=12, hello func)

匿名函数托管器 spring-boot-func-starter的更多相关文章

  1. Spring Boot自定义starter必知必会条件

    前言 在目前的Spring Boot框架中,不管是Spring Boot官方还是非官方,都提供了非常多的starter系列组件,助力开发者在企业应用中的开发,提升研发人员的工作效率,Spring Bo ...

  2. spring boot自定义starter

    1.spring boot 项目中自定义jar包 2.项目目录 3.src/main/java 下面写自己的方法,重点是 resources 下面的文件,在resources下面新建文件夹名字为 ME ...

  3. Spring Boot 自定义 starter

    一.简介 SpringBoot 最强大的功能就是把我们常用的场景抽取成了一个个starter(场景启动器),我们通过引入springboot 为我提供的这些场景启动器,我们再进行少量的配置就能使用相应 ...

  4. Spring boot 自定义starter

    以下配置来自尚硅谷.. 常用如何配置 @Configuration //指定这个类是一个配置类 @ConditionalOnXXX //在指定条件成立的情况下自动配置类生效 @AutoConfigur ...

  5. Spring Boot中Starter是什么

    比如我们要在Spring Boot中引入Web MVC的支持时,我们通常会引入这个模块spring-boot-starter-web,而这个模块如果解压包出来会发现里面什么都没有,只定义了一些POM依 ...

  6. 【串线篇】spring boot自定义starter

    starter: 一.这个场景需要使用到的依赖是什么? 二.如何编写自动配置 启动器只用来做依赖导入:(启动器模块是一个空 JAR 文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库) ...

  7. Spring Boot 各Starter介绍

    原文链接:https://blog.csdn.net/u014430366/article/details/53648139 Spring-Boot-Starters 最通俗的理解- jar 包,引用 ...

  8. 手把手教你实现自定义Spring Boot的 Starter

    引言 上篇文章<天天用SpringBoot,它的自动装配原理却说不出来>我们有说springBoot的自动装配怎么实现的(建议最好先看下篇文章,因为前后有关系),这篇文章的话我们就自己来实 ...

  9. Spring Boot 自定义Starter 可能引发的问题(Error)

    如果你的项目出现: Consider defining a bean of type 'com.wy.helloworld_spring_boot_starter.PersonService' in ...

随机推荐

  1. js特效代码-onmouseover/onclick 改变标签(背景)颜色

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  2. Docker系列(12)- 部署Tomcat

    #官方的使用:我们之前的启动都是后台,停止容器后,容器还是可以看到#docker run -it --rm,一般用来测试,用完就会删除容器,镜像还在[root@localhost ~]# docker ...

  3. Apache AB(1) - 快速使用

    前言 Apache AB的优缺点 十分快捷.简单 只适用HTTP协议 该工具更加适用于单接口性能压测 参数化实现麻烦:被测接口没有太多参数化 不支持场景化,不能将上下文串联起来 适用于快速开发小的场景 ...

  4. Shell系列(36)- for循环语法二简介及批量添加删除用户

    for循环语法二 for ((初始值;循环控制条件;变量变化)) do 程序 done 例子 例子-1 求和工具 需求:根据用户输入的数字,求1~输入所有数字的和 脚本: #!/bin/bash re ...

  5. P1013 [NOIP1998 提高组] 进制位

    解析 看到这道题时,有没有想到搜索?然后就是一通码......然后过了. 但是,真的要用搜索吗? 我们可以观察一下.对于n进制中的数ii,如果ii加上某一个数jj会变成两位数,那么可以得到如下不等式: ...

  6. 最推荐的抓包工具charles

    Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据.它允许一个开发者查看所有连接互联 ...

  7. javascript 比较版本号大小 字符串

    * 不用系统比较大小的函数 // 不考虑字母 function s2i(s) { return s.split('').reduce(function(a, c) { var code = c.cha ...

  8. Hive语法及其进阶(二)

    1.使用JDBC连接Hive 1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.Prep ...

  9. MySQL8.0.20安装教程图文详解,MySQL8.0.20安装教程winodws10

    MySQL8.0.20安装教程图文详解,非常详细 一:mysql官网下载 https://dev.mysql.com/downloads/file/?id=494993 不用注册,直接下载就好 二:解 ...

  10. Azure Devops实践(5)- 构建springboot项目打包docker镜像及容器化部署

    使用Azure Devops构建java springboot项目,创建镜像并容器化部署 1.创建一个springboot项目,我用现有的项目 目录结构如下,使用provider项目 在根目录下添加D ...