为啥Java Web框架都没有很好的脚手架
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥Java Web框架都没有很好的脚手架相关的知识,希望对你有一定的参考价值。
记得Django和Rails教程都介绍了通过实体生成一个简单的CRUD界面,现在用的ASP.NET MVC这块我觉得做得更好,不仅按照实体字段生成了输入框,对jquery validate集成的也不错。最近看spring mvc或者struts2都没有这块内容。当然可能这么说不合适毕竟spring有spring roo,但是我看过一点roo的教程,我觉得似乎侵入性太强了,可能侵入性这个词不合理,我的意思就是在asp.net mvc中,这个脚手架就是整个开发的一个流程,看spring roo的教程似乎有一种从写html代码换成Dreamware画界面那种感觉。这个应该看使用程度就知道了,使用过ASP.NET MVC中的都会去用脚手架,但是Java web开发中很少人用spring roo。如果说这个功能不需要的话为啥几乎所有web框架都提供。我开始以为是因为Java本身语言特性的问题,但是我发现php大多框架都支持脚手架,就不太明白了。
我本以为现在国内的开发环境也越来越成熟,越来越正规,就算某种语言有过什么弯路,但是如果不是本质性的问题,比如php很大程度上还算一个面向过程的语言。除此之外现在大家基本功能都应该健全了,毕竟php,Java,.net都是存在超过十年的语言了。
是我某些地方想错了吗?是这些东西真的无所谓吗?我记得以前看某个人的评论说“java是十年前的web技术,php是五年前的,python才是现在的技术”,我还是还觉得是个笑话,Java可是一个oop的多范式语言,语言特性上应该比php好,python虽然某些特性上比较好,但是毕竟是动态语言,好吧php也是动态语言,很多地方静态语言+好的IDE不比动态语言差。 参考技术A 书籍吗?应为框架是属于应用级别的所以框架较少,一般都是看官方的文档来学习的。 参考技术B ES—JavaEE快速开发脚手架
bbossgroups
Wabacus
Grails项目整合nacos和feign
Grails简介
Java 领域中众多现有的 Web框架 都相对比较复杂,并且大多没有很好的遵循 DRY(不重复自己)规则。像 Rails 和 Django 这样的动态框架帮助了我们以更现代化的方式思考 Web应用程序。Grails 构建于这些概念之上,并极大地降低了在 Java 平台上构建web应用程序的复杂性。但是,它的不同之处在于,它构建在 Spring 和 Hibernate 等已有的 Java技术栈之上。
Grails是一个全栈框架,它试图通过一些核心技术及其相关插件来解决 Web 开发中的诸多难题,比如:
GORM - 一个易于使用的 ORM 库,支持 SQL、MongoDB、Neo4j 等
用于渲染 HTML 和 JSON 的视图技术
基于 Spring Boot 的控制器
有数百个插件的插件系统
灵活的 profiles 可创建 与AngularJS,React ,vue等应用程序
基于 Gradle 的可交互的命令行环境和构建系统
一个已配置为热加载的内置 Tomcat 容器
Demo所用到的版本对应关系
Grails | Groovy | JVM | Gradle |
4.0.3 | 3.0.2 | 1.8.0_171 | 6.2.2 |
Grails4所支持的SpringBoot相关版本
Spring | Spring Boot | Spring Cloud | Spring Cloud Alibaba |
5.1.x | 2.1.x | Spring Cloud Greenwich | 2.1.x |
dependencyManagement {
dependencies {
dependency group: 'com.alibaba.cloud',
name: 'spring-cloud-alibaba-dependencies',
version: '2.1.1.RELEASE', ext: 'pom'
}
}
//在dependecis{}中添加
compile group: 'com.alibaba.cloud',
name: 'spring-cloud-alibaba-nacos-discovery',
version: '2.1.1.RELEASE'
server:
port: 8081
servlet:
context-path: /${spring.application.name}
spring:
application:
name: nacos-demo
cloud:
nacos:
discovery:
enabled: true
server-addr: 127.0.0.1:8848
service: ${spring.application.name}
---
grails:
profile: rest-api
在项目启动类添加@EnableDiscoveryClient注解
@CompileStatic
@EnableDiscoveryClient
class Application extends GrailsAutoConfiguration {
static void main(String[] args) {
GrailsApp.run(Application, args)
}
}
启动测试
集成Feign实现服务调用
引用配置
dependencyManagement {
dependencies {
dependency group: 'org.springframework.cloud',
name: 'spring-cloud-dependencies',
version: 'Greenwich.SR4', ext: 'pom'
dependency group: 'com.alibaba.cloud',
name: 'spring-cloud-alibaba-dependencies',
version: '2.1.1.RELEASE', ext: 'pom'
}
}
dependencies {
compile group: 'com.alibaba.cloud',
name: 'spring-cloud-alibaba-nacos-discovery',
version: '2.1.1.RELEASE'
compile group: 'org.springframework.cloud',
name: 'spring-cloud-starter-openfeign',
version: '2.1.5.RELEASE'
...
}
编写服务提供类
在上一个demo里面编写,把上一个demo当作服务提供方
class DemoController {
static responseFormats = ['json', 'xml']
def index() {
render 'index'
}
}
在服务消费者Demo中,编写对应的接口信息
interface DemoFegin {
String index()
}
在服务消费者Demo中,编写消费接口
class TestController {
static responseFormats = ['json', 'xml']
@Autowired
DemoFegin demoFegin
def index() {
render demoFegin.index()
}
}
在服务消费启动类上添加Feign注解
"nacos.fegin"]) (basePackages = [
class Application extends GrailsAutoConfiguration {
static void main(String[] args) {
GrailsApp.run(Application, args)
}
}
server:
port: 8082
servlet:
/${spring.application.name} :
spring:
application:
name: nacos-fegin
cloud:
nacos:
discovery:
enabled: true
127.0.0.1:8848 :
service: ${spring.application.name}
zuul:
url: http://49.233.35.60/:8848
nacos-demo :
启动测试
启动测试如下:
下面是跨服务调用:
http://grails.ejlchina.com/guide/#grails-简介
https://gitee.com/huajiangliangliang/grails-demo
以上是关于为啥Java Web框架都没有很好的脚手架的主要内容,如果未能解决你的问题,请参考以下文章