cuba.platform_CUBA 7.2 –有什么新功能?
cuba.platform
CUBA平臺(tái)的第七版向前邁出了一大步。 內(nèi)部體系結(jié)構(gòu)的改進(jìn)和新的IDE為進(jìn)一步改進(jìn)奠定了良好的基礎(chǔ)。 我們將繼續(xù)添加新功能,以使開發(fā)人員的生活更輕松,并使他們的工作更加高效。
在7.2版中,我們引入了許多可能看起來像是主要更新的更改,但是由于版本7的靈活性,這只是自然的平臺(tái)發(fā)展。
多種語言CUBA
現(xiàn)在,作為基于CUBA的應(yīng)用程序的一流語言,Kotlin得到了完全支持。 現(xiàn)在,您可以使用Kotlin創(chuàng)建實(shí)體,服務(wù),屏幕控制器和所有其他組件。
Kotlin中的代碼允許您使用更短,更簡(jiǎn)潔的語句,因此您可以比以前更快地創(chuàng)建應(yīng)用程序。 使用IDE中的IntelliJ IDEA語言支持,我們能夠?qū)崿F(xiàn)與Java相同的功能:上下文驅(qū)動(dòng)的注入,智能提示,代碼生成等。
這是一個(gè)簡(jiǎn)單實(shí)體的示例。 如您所見,該代碼比Java短得多,沒有g(shù)etter和setter,該代碼可讀性強(qiáng)且清晰。
@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 } }對(duì)于以前使用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()); } }和服務(wù):
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完全兼容,您甚至可以在同一應(yīng)用程序中混合使用Kotlin和Java。
最后,在Kotlin上編程很有趣(沒有雙關(guān)語)!
安全子系統(tǒng)更新
安全始終很重要。 我們對(duì)安全子系統(tǒng)進(jìn)行了徹底的審查,并決定使用“默認(rèn)情況下拒絕”方法。 對(duì)于以前使用CUBA的人來說,這聽起來可能很不尋常,但是“個(gè)人安全勝于遺憾”的座右銘在泄露個(gè)人數(shù)據(jù)時(shí)極為重要。 與往常一樣,我們?yōu)槭褂迷缙贑UBA版本開發(fā)的應(yīng)用程序提供了遷移路徑。
另一重要的事情-設(shè)計(jì)時(shí)角色定義。 現(xiàn)在,您可以用Java代碼定義訪問規(guī)則,因此,您無需從測(cè)試環(huán)境中導(dǎo)出角色定義并將其導(dǎo)入到生產(chǎn)版本中。 我們沒有放棄傳統(tǒng)的運(yùn)行時(shí)角色定義,只是向安全子系統(tǒng)添加了一項(xiàng)功能。 您是要使用運(yùn)行時(shí)角色,設(shè)計(jì)時(shí)角色還是同時(shí)使用這兩種角色,均由您決定。
這是為實(shí)體,屬性和屏幕定義訪問規(guī)則的示例:
@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(); } }它看起來比“傳統(tǒng)的”運(yùn)行時(shí)定義更為冗長,但是這種方法使我們可以對(duì)各種應(yīng)用程序組件進(jìn)行更細(xì)粒度的訪問。 結(jié)合新引入的范圍,更新的安全子系統(tǒng)將使您的應(yīng)用程序更安全。
更好的通用用戶界面
我們將繼續(xù)支持和更新通用UI子系統(tǒng)。 在此版本中,我們使默認(rèn)的側(cè)菜單可折疊,以節(jié)省應(yīng)用程序屏幕上的更多空間。 您可以在啟動(dòng)應(yīng)用程序后立即看到此信息。
至于屏幕內(nèi)部:現(xiàn)在,開發(fā)人員可以在XML屏幕描述符中定義視圖,因此無需在單獨(dú)的文件中創(chuàng)建視圖。
<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>除此之外,我們還添加了一些較小的更改以簡(jiǎn)化開發(fā)人員的工作:
- 表單中元素的靈活位置
- 網(wǎng)格的初始排序
- 選擇/取消選擇所有網(wǎng)格命令
- 按鈕快捷方式
- 日期和時(shí)間字段的改進(jìn)
- 和更多
簡(jiǎn)化部署
在此版本中,您可以直接在應(yīng)用程序中配置數(shù)據(jù)庫連接。 作為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此功能使應(yīng)用程序獨(dú)立于應(yīng)用程序服務(wù)器環(huán)境。 結(jié)合彈簧輪廓,此功能變得更加強(qiáng)大-7.2版的另一個(gè)功能。
Spring概要文件使您可以定義特定于部署環(huán)境的Bean。 例如,您可以為開發(fā)和生產(chǎn)服務(wù)器使用不同的實(shí)現(xiàn)。
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文件中激活配置文件,也可以通過在命令行中設(shè)置環(huán)境屬性spring.profiles.active來激活配置文件:
java -Dspring.profiles.active=prod -jar app.jarSpring概要文件不僅可以應(yīng)用于bean,還可以應(yīng)用于配置文件。 例如,您可以在<profile>-app.properties文件中定義特定于<profile>-app.properties文件的數(shù)據(jù)源連接屬性。 或?yàn)闇y(cè)試和生產(chǎn)環(huán)境指定不同的SMTP服務(wù)器。 說“否”以測(cè)試客戶的收件箱文件夾中的電子郵件!
CUBA Studio更新
CUBA Studio支持上述所有功能。 我們的主要開發(fā)工具也在不斷開發(fā)中。 我們將添加新功能,利用新的IntelliJ API并改進(jìn)代碼生成算法,以嘗試使所有自動(dòng)化過程自動(dòng)化,因此您不必編寫重復(fù)無聊的樣板代碼。
更新的完整列表可以在此處找到,讓我們僅回顧最重要的更新:
- 新的登錄屏幕模板。 現(xiàn)在,您可以使用更“品牌友好”的登錄窗口。
- 屏幕設(shè)計(jì)器UI進(jìn)行了重新設(shè)計(jì),我們拆分了其面板以節(jié)省IDE窗口空間,并允許開發(fā)人員在編輯XML布局時(shí)看到更改。
- 擴(kuò)展了項(xiàng)目向?qū)?#xff0c;以支持新的編程語言,并允許我們輸入其他信息,例如語言環(huán)境和主要數(shù)據(jù)存儲(chǔ)區(qū)屬性。
結(jié)論
通過此更新,使用CUBA框架的開發(fā)變得更加輕松,快速和令人興奮。 使用Kotlin,您將有機(jī)會(huì)使用一種最流行的編程語言。
由于在應(yīng)用程序中配置了spring profile和數(shù)據(jù)源,因此簡(jiǎn)化了部署到不同環(huán)境的工作。
通用UI的改進(jìn)將幫助您以更高的準(zhǔn)確性將設(shè)計(jì)師對(duì)理想用戶界面的幻想帶入現(xiàn)實(shí)。
而且我們?nèi)匀槐3衷摽蚣芟蚝蠹嫒?#xff0c;因此您的應(yīng)用程序升級(jí)到7.2版應(yīng)該盡可能的順利。
您可以在此處找到具有所有更改的發(fā)行說明。
翻譯自: https://www.javacodegeeks.com/2020/02/cuba-7-2-whats-new.html
cuba.platform
總結(jié)
以上是生活随笔為你收集整理的cuba.platform_CUBA 7.2 –有什么新功能?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html模板怎么查看(html查询页面模
- 下一篇: 日发帖 发帖频率 发帖时段_先发帖