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.jarSpring概要文件不僅可以應用于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 –有什么新功能?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html模板怎么查看(html查询页面模
- 下一篇: 日发帖 发帖频率 发帖时段_先发帖