cuba.platform_CUBA 7.2 –有什么新功能?
cuba.platform
CUBA平台的第七版向前迈出了一大步。 内部体系结构的改进和新的IDE为进一步改进奠定了良好的基础。 我们将继续添加新功能,以使开发人员的生活更轻松,并使他们的工作更加高效。
在7.2版中,我们引入了许多可能看起来像是主要更新的更改,但是由于版本7的灵活性,这只是自然的平台发展。
多种语言CUBA
现在,作为基于CUBA的应用程序的一流语言,Kotlin得到了完全支持。 现在,您可以使用Kotlin创建实体,服务,屏幕控制器和所有其他组件。
Kotlin中的代码允许您使用更短,更简洁的语句,因此您可以比以前更快地创建应用程序。 使用IDE中的IntelliJ IDEA语言支持,我们能够实现与Java相同的功能:上下文驱动的注入,智能提示,代码生成等。
这是一个简单实体的示例。 如您所见,该代码比Java短得多,没有getter和setter,该代码可读性强且清晰。
@NamePattern ( "%s|name" ) @Table (name = "PETCLINIC_VET" ) @Entity (name = "petclinic_Vet" ) class Vet : StandardEntity() { @NotNull @Column (name = "NAME" , nullable = false , unique = true ) var name: String? = var name: String? = null companion object { private const val serialVersionUID = -8600988577624886948L } }
对于以前使用CUBA的任何人,屏幕控制器看起来都非常熟悉:
@UiController ( "petclinic_Vet.edit" ) @UiDescriptor ( "vet-edit.xml" ) @EditedEntityContainer ( "vetDc" ) @LoadDataBeforeShow VetEdit : StandardEditor<Vet>() { class VetEdit : StandardEditor<Vet>() { @Inject private lateinit var vetService: VetService @Subscribe ( "assignVisit" ) private fun onAssignVisitClick(event: Button.ClickEvent) { vetService.scheduleVisit(editedEntity, LocalDateTime.now()); } }
和服务:
interface VetService { companion object { const val NAME = "petclinic_VetService" } fun scheduleVisit(vet: Vet, visitDate: LocalDateTime): Visit } @Service (VetService.NAME) VetServiceBean : VetService { class VetServiceBean : VetService { @Inject private lateinit var dataManager: DataManager override fun scheduleVisit(vet: Vet, visitDate: LocalDateTime): Visit { //Business logic for a visit scheduling } }
该代码与Java完全兼容,您甚至可以在同一应用程序中混合使用Kotlin和Java。
最后,在Kotlin上编程很有趣(没有双关语)!
安全子系统更新
安全始终很重要。 我们对安全子系统进行了彻底的审查,并决定使用“默认情况下拒绝”方法。 对于以前使用CUBA的人来说,这听起来可能很不寻常,但是“个人安全胜于遗憾”的座右铭在泄露个人数据时极为重要。 与往常一样,我们为使用早期CUBA版本开发的应用程序提供了迁移路径。
另一重要的事情-设计时角色定义。 现在,您可以用Java代码定义访问规则,因此,您无需从测试环境中导出角色定义并将其导入到生产版本中。 我们没有放弃传统的运行时角色定义,只是向安全子系统添加了一项功能。 您是要使用运行时角色,设计时角色还是同时使用这两种角色,均由您决定。
这是为实体,属性和屏幕定义访问规则的示例:
@Role (name = "Customers Full Access" ) public class CustomersFullAccessRole extends AnnotatedRoleDefinition { @EntityAccess (target = Customer. class , allow = {EntityOp.CREATE, EntityOp.READ, EntityOp.UPDATE, EntityOp.DELETE}) @Override public EntityPermissionsContainer entityPermissions() { return super .entityPermissions(); } @EntityAttributeAccess (target = Customer. class , modify = { "name" , "email" }) @Override public EntityAttributePermissionsContainer entityAttributePermissions() { return super .entityAttributePermissions(); } @ScreenAccess (allow = { "application-demo" , "demo_Customer.browse" , "demo_Customer.edit" }) @Override public ScreenPermissionsContainer screenPermissions() { return super .screenPermissions(); } }
它看起来比“传统的”运行时定义更为冗长,但是这种方法使我们可以对各种应用程序组件进行更细粒度的访问。 结合新引入的范围,更新的安全子系统将使您的应用程序更安全。
更好的通用用户界面
我们将继续支持和更新通用UI子系统。 在此版本中,我们使默认的侧菜单可折叠,以节省应用程序屏幕上的更多空间。 您可以在启动应用程序后立即看到此信息。
至于屏幕内部:现在,开发人员可以在XML屏幕描述符中定义视图,因此无需在单独的文件中创建视图。
<data> <instance id= "orderDc" class = "com.company.sales.entity.Order" > <view extends = "_local" > <property name= "lines" view= "_minimal" > <property name= "product" view= "_local" /> <property name= "quantity" /> </property> <property name= "customer" view= "_minimal" /> </view> <loader/> </instance> </data>
除此之外,我们还添加了一些较小的更改以简化开发人员的工作:
- 表单中元素的灵活位置
- 网格的初始排序
- 选择/取消选择所有网格命令
- 按钮快捷方式
- 日期和时间字段的改进
- 和更多
简化部署
在此版本中,您可以直接在应用程序中配置数据库连接。 作为JNDI定义的替代方法,您可以在app.properties
文件中定义连接属性。
cuba.dbmsType = hsql cuba.dataSourceProvider = application cuba.dataSource.username = sa cuba.dataSource.password = cuba.dataSource.dbName = petclinic cuba.dataSource.host = localhost cuba.dataSource.port = 9010
此功能使应用程序独立于应用程序服务器环境。 结合弹簧轮廓,此功能变得更加强大-7.2版的另一个功能。
Spring概要文件使您可以定义特定于部署环境的Bean。 例如,您可以为开发和生产服务器使用不同的实现。
public interface HelloService { String NAME = "demo_helloService" ; String hello(String input); } @Service (HelloService.NAME) @Profile ( "dev" ) public class HelloDevServiceBean implements HelloService { @Override public String hello(String input) { return "Development stub: hello " + input; } } @Service (HelloService.NAME) @Profile ( "prod" ) public class HelloProdServiceBean implements HelloService { @Override public String hello(String input) { return "Production service: hello " + input; } }
可以在web.xml
文件中激活配置文件,也可以通过在命令行中设置环境属性spring.profiles.active
来激活配置文件:
java -Dspring.profiles.active=prod -jar app.jar
Spring概要文件不仅可以应用于bean,还可以应用于配置文件。 例如,您可以在<profile>-app.properties
文件中定义特定于<profile>-app.properties
文件的数据源连接属性。 或为测试和生产环境指定不同的SMTP服务器。 说“否”以测试客户的收件箱文件夹中的电子邮件!
CUBA Studio更新
CUBA Studio支持上述所有功能。 我们的主要开发工具也在不断开发中。 我们将添加新功能,利用新的IntelliJ API并改进代码生成算法,以尝试使所有自动化过程自动化,因此您不必编写重复无聊的样板代码。
更新的完整列表可以在此处找到,让我们仅回顾最重要的更新:
- 新的登录屏幕模板。 现在,您可以使用更“品牌友好”的登录窗口。
- 屏幕设计器UI进行了重新设计,我们拆分了其面板以节省IDE窗口空间,并允许开发人员在编辑XML布局时看到更改。
- 扩展了项目向导,以支持新的编程语言,并允许我们输入其他信息,例如语言环境和主要数据存储区属性。
结论
通过此更新,使用CUBA框架的开发变得更加轻松,快速和令人兴奋。 使用Kotlin,您将有机会使用一种最流行的编程语言。
由于在应用程序中配置了spring profile和数据源,因此简化了部署到不同环境的工作。
通用UI的改进将帮助您以更高的准确性将设计师对理想用户界面的幻想带入现实。
而且我们仍然保持该框架向后兼容,因此您的应用程序升级到7.2版应该尽可能的顺利。
您可以在此处找到具有所有更改的发行说明。
翻译自: https://www.javacodegeeks.com/2020/02/cuba-7-2-whats-new.html
cuba.platform
cuba.platform_CUBA 7.2 –有什么新功能?相关推荐
- cuba.platform_CUBA Platform 6.3的新增功能
cuba.platform 我们很自豪地宣布新版本的CUBA平台和Studio全面上市! 也许这是有史以来功能最丰富的平台版本之一–在各个级别上都有重要的变化:体系结构,可扩展性,API可用性和性能. ...
- cuba 平台_CUBA 7的新功能
cuba 平台 三年前,我们宣布了该框架的第二个公开可用的主要版本. CUBA 6是改变游戏规则的版本–许可从专有转为Apache 2.0. 那些日子,我们甚至无法猜测从长远来看它将把框架带到哪里. ...
- CUBA 7.2 –有什么新功能?
CUBA平台的第七版向前迈出了一大步. 内部体系结构的改进和新的IDE为进一步改进奠定了良好的基础. 我们将继续添加新功能,以使开发人员的生活更轻松,并使他们的工作更加高效. 在7.2版中,我们引入了 ...
- CUBA 7的新功能
三年前,我们宣布了该框架的第二个公开可用的主要版本. CUBA 6是改变游戏规则的版本–许可从专有转为Apache 2.0. 那些日子,我们甚至无法猜测从长远来看它将把框架带到哪里. CUBA社区开始 ...
- 微信小程序 长按图片不出现菜单_微信更新,新功能上了热搜
微信在推出新功能方面相当克制,但每一次总能引起全网关注. 昨天,微信又因为一个小功能的改进再次上了热搜,在安卓最新的 7.0.17 版本当中,微信取消了两分钟内删除功能. 在新版微信中,发出的消息在两 ...
- drx功能开启后_简单实用!小米手机中这些新功能真香
小米手机作为国产机热销品牌之一,它除了有好看的外观,还有很多隐藏的实用功能,今天小编就来和大家分享5个小米手机里你不知道的功能. Al电话助理 看到陌生号码时,很多人第一反应就是挂掉,不想接听,但又担 ...
- Windows 2008 R2中的NAP新功能详解
随着Windows Server 2008 R2版本的发布,Windows网络访问保护模式(NAP)又增加了新功能.在本文中,笔者将对新功能进行简要的介绍. Windows Server 2008中提 ...
- iOS15.4 来袭:新增“男妈妈”表情及口罩面容解锁、AirTags 反跟踪等新功能
整理 | 章雨铭 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 今日,苹果发布了iOS/iPadOS 15.4正式版.该版本带来了一些重大新功能的更新,包括在戴口罩时使用Face ID ...
- 苹果新功能惹网友众怒,还有隐私可言吗?
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 大部分人选择 iPhone 的一大理由就是信息安全,这家公司对于个人隐私的保护一直为人称赞. 最近苹果公司宣布,为了让儿童能够更 ...
最新文章
- java代码 将字符串快速生成到string.xml中
- PaSS: a sequencing simulator for PacBio sequencing PaSS:用于PacBio测序的测序模拟器
- Mysql binlog日志及binlog恢复数据库操作
- jQuery11 data() : 数据缓存
- 6 款 Java 8 自带工具,轻松分析定位 JVM 问题!
- Django 基于角色的权限控制
- Android之app引导页(背景图片切换加各个页面动画效果)
- MIPS架构之start.s汇编分析
- [日推荐] 『地铁查询』全国地铁尽在手中,不怕迷路!
- 考研南邮和杨大计算机,江苏省这4所“非211”低调有实力,从不争名次,毕业生颇受欢迎...
- 如何下载全国的POI数据,如何获取全国的POI数据,poi数据搜索,高德poi获取,poi数据分析,poi免费数据,城市规划数据
- EPSON爱普生系列打印机清洗更换墨盒方法
- ps快捷键大全(表格汇总)
- R语言绘图--高级图形之Circos
- 或门,OR Gate
- golang切片简介
- Xcode能编译运行成功,但是模拟器没有任何反应
- 蓝牙键盘连接——输入pin码
- 锐捷ac怎么发现局域网ap_锐捷 ac ap 连接 记录
- BIO和NIO消耗的cpu和内存比较
热门文章
- 牛客题霸 [最大数] C++题解/答案
- 牛客网【每日一题】5月15日题目 储物点的距离
- CodeForces1477D Nezzar and Hidden Permutations(构造+调整+菊花图)
- CF438D-The Child and Sequence【线段树】
- P4593-[TJOI2018]教科书般的亵渎【拉格朗日差值】
- jzoj4228-C【dp】
- nssl1185-试卷【状态压缩】
- P3701 -「伪模板」主席树【网络流,最大流】
- 2018/7/11-纪中某C组题【jzoj1293,jzoj1294,jzoj1295】
- ISBN号码【模拟】