簡體   English   中英

Java bean,注釋:它們做什么? 他們如何幫助我?

[英]Java beans, annotations: What do they do? How do they help me?

這是我到目前為止所理解的:

Java bean只是為了幫助其他事物(視覺事物?)與您的代碼進行交互。 我認為這主要是針對UI的東西,因為它更容易在視覺上進行設計。 將Java bean用於非UI事物是不好的做法嗎?

Java bean具有getter和setter方法(糟糕的OOP實踐)並且是可序列化的。

在注釋方面,我認為用戶定義的注釋不提供任何功能。 某些注釋如@depretiated會引發編譯器警告。 用戶定義的注釋可以以某種方式執行此操作嗎? 用戶定義的注釋是否適用於除文檔之外的任何其他內容? 我該如何使用它們? eclipse或intellij是否有一些涉及注釋的功能?

周末愉快。

可靠的人

更新:這開始變得更有意義。 有人可以向我推薦一個例子,說明何時使用java bean格式是合適的,何時不適用?

我還讀到某個地方,幾個類可以是一個bean,它是一種打包類的方式。

只是為了澄清一件事。 我95%肯定作為一個java bean有點像單身(或其他模式)。 它不會影響編譯器的功能。

注釋是一種表示性編程的形式。 首先,在注釋的實用性變得清晰之前,您必須了解聲明式編程的好處。 實質上,您可以通過“聲明”它具有某種特征來向代碼塊添加功能或行為。 這與實際編寫一系列語句以應用或設置相同的行為形成對比。

JPA注釋是使用注釋添加功能的示例。 我不知道“用戶創建”的例子在我的頭頂,但JPA注釋的實現方式與您或我的方式完全相同。

就Java Bean而言,它們最初的用途是用於GUI編程。 使用JavaBeans的“簡單”方法是使用命名約定來定義bean的“屬性” - 因此是getter和setter。 據我所知,JavaBeans最初是基於GUI的表單和UI編輯的實現。 因此,getter和setter使UI軟件可以輕松發現用戶可查看或可編輯的屬性。 使用Bean描述符,您可以更改描述符的工作方式...

他們堅持到今天的原因是他們提供了事實上的方法來檢查公開暴露的物業的對象。 在GUI之外使用JavaBeans是一種不錯的形式。 Java中的偏好似乎是使用no arg構造函數然后注入您的依賴項而不是使用RAII樣式的編程(不是它嚴格可用)......

它實際上很常見,特別是如果對象將被不知道它將要操作的對象的代碼操縱(看一下Hibernate的一個很好的例子)。

我懷疑你是混淆Java bean和EJB(Enterprise Java Beans) - 這些是不同的概念。 實際上它們現在差不多了,但並非總是如此 - 歷史相當令人困惑。

James給出了Java bean歷史的一個很好的解釋 - 它們比注釋(在Java 1.5中引入)要早得多。 EJB也更老了,但它們已經徹底修改,現在基本上是Java bean,在EJB容器中運行特殊注釋。

這實際上是注釋有用的完美示例。

“舊式”EJB(在規范的第3版之前)編碼很糟糕 您需要定義(IIRC)兩個接口,一個實現類(實際上沒有實現接口)和一個將它們鏈接在一起的XML描述符。 如果你在任何地方發錯字,那就沒有編譯器錯誤 - 只是一個完全神秘的運行時錯誤,它無法幫助你縮小問題范圍。

為什么會這樣? 因為它允許EJB容器控制實際實現代碼的調用方式,並透明地執行訪問控制,事務和復制等操作。

在EJB 3.0規范中,這是根本簡化的,因此現在您只需要一個類(在實體bean的情況下可以是“經典”Java Bean),它實際上實現了EJB的邏輯 - 以及告訴EJB的注釋容器如何對待它。 而不是單獨的XML文件,有關代碼的信息緊跟在同一文件中的代碼本身旁邊,並且由於編譯器檢查了注釋語法,因此在編譯時捕獲了許多潛在的錯誤。

JUnit使用自JUnit版本4以來的注釋。 這是用戶定義注釋的示例。 將@ Test-annotation添加到方法中,JUnit-framework識別它並將該方法作為test執行。

一些框架將使用Bean來處理其他未知對象。 我想到的一個例子是持久性框架,它們將一些注冊的對象復制到數據庫中並使用bean屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM