日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CUBA 7.2 –有什么新功能?

發布時間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CUBA 7.2 –有什么新功能? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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概要文件和數據源,因此簡化了到不同環境的部署。

通用UI的改進將幫助您以更高的準確性將設計師對理想用戶界面的幻想帶入現實。

而且我們仍然保持該框架向后兼容,因此您的應用程序升級到7.2版應該盡可能的順利。

您可以在此處找到具有所有更改的發行說明。

翻譯自: https://www.javacodegeeks.com/2020/02/cuba-7-2-whats-new.html

總結

以上是生活随笔為你收集整理的CUBA 7.2 –有什么新功能?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。