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)