Java Gossip学习笔记 (二)

From Gossip@caterpillar

語言技術:Java Gossip(二)

I'm Tiger...hoo... 在學習Java的過程中,您會接觸到很多框架( Framework),而第一步就是從J2SE的框架開始學習,框架讓您不用重新打造您需要的功能元件,它也是經驗的集成,即使您要重新打造,參考框架的實作方式,就可以讓您獲得不少寶貴的經驗。

事實上以下的每個主題區都有專書介紹,這邊所介紹的內容,都只是某個主題的入門,若有進階的應用需求,查閱相關書籍是必要的。


物件容器(Container)
    物件容器可以幫您持有對象,在Java中分作兩大類:Collection 與 Map。前者可持有各自獨立的物件,後者持有成對的key-value物件。
  • Collection 類
Collection 類包括了 List 類與 Set 類,List 以放置物件至容器中的順序來排列物件,Set 類不接受重覆的物件,並有自己的一套排序規則。
  • Map 類
在將物件存入 Map類時,需要配合一把key,您要取回物件時就是根據這把key,Map中的key是唯一的,Map擁有自己的排序機制。

輸入輸出(I/O)
    為了要將程式運行結果儲存下來,以供下一次開啟時使用,檔案輸入輸出是一個應用程式所必備的,藉由檔案的輸入輸出,也可以一同瞭解Java的I/O處理。
  • 檔案處理
File類別是檔案的抽象表示,也是處理檔案輸入輸出時所必備的。
電腦中的資料都是以 0 與 1 的方式來儲存,如果您要在兩個裝置之間進行資料的存取,當然也是以 0 與 1 位元的方式來進行,Java將資料目的地與來源之間的流動抽象化為一個串流(Stream),而當中流動的則是位元資料。
Reader、 Writer等是處理字元串流(Character Stream)的相關類別,簡單的說,就是對串流資料以一個字元(16bit)的長度為單位來處理(0~65535、0x0000-0xffff),並進行適當的字元轉換處理。

執行緒(Thread)
    一個執行緒是進程(Process)中的一個執行流程,一個進程中可以同時包括多個執行緒,CPU會分配時間片段來處理這些子流程,這使得一個程式可以像是同時間處理多個事務。
  • 執行緒入門
想要實作執行緒功能,只要實作Runnable介面,單就表面上來看,執行緒並不困難。
您只要實作 Runnable介面,就可以實作執行緒功能,入門是簡單的,但資料一被共用,事情就變得複雜。
來看看 JDK 5.0 為多執行緒新增的幾個好用類別。

反射(Reflection)
    反射機制允許執行時期動態檢視與操作類別,一般應用程式開發較不常用到,但是在一些框架或檢視工具程式中,就經常使用到反射機制。
  • 檢視類別
即使您拿到一個類別並對它一無所知,但其實它本身就包括了許多資訊,從 Class 開始,您可以獲得這個類的許多訊息。
  • 生成與操作
使用反射機制,您可以於執行時期動態載入類別並生成物件,操作物件上的方法甚至改變類別成員的值。

metadata
    metadata 簡單的說就是資料的資料(Data about data),J2SE 5.0 中對 metadata 的支援是 Annotation,目的在對程式碼作出說明以利分析工具使用。
  • Annotation
Annotation 對程式運行沒有影響,它的目的在對編譯器或分析工具說明程式的某些資訊,您可以在package、class、method、field等上加上 Annotation。
在定義 Annotation 型態的時候,為 Annotation 型態加上 Annotation 並不奇怪,這為處理 Annotation 型態的工具提供資訊。

資料庫(JDBC)
    JDBC是用於執行SQL的Java API,它將資料庫存取的API與SQL陳述分開,實現資料庫無關的API介面,藉由JDBC統一的介面,開發人員只要專注於SQL陳述,而可以不必理會底層的資料庫驅動程式與相關介面。

捨遺補缺
    前面都是有系統的介紹某個主題,然而整個 J2SE 要詳細說明是不可能的,這邊就隨時補充一些可能使用到的工具類別。
  • 屬性設定、訊息綁定
您可以將一些屬性設定獨立於一個.properties檔中,由程式讀取,若要修改屬性則直接修改.properties檔案即可。也可以將訊息另外定義在一個文字檔案中,而不是寫死在程式中,日後想要更改訊息時,只要更改文字檔案內容,而不用重新編譯程式。
表面上看來,要取得系統的時間只要使用 Date 類別就可以了,但查閱 Date 後,發現很多方法都被標示為 Deprecated?
如果您只是要作一些簡單的文件記錄,可以考慮內建在JDK 中的Logging API,好處是它從JDK 1.4之後就成為J2SE的一員。
如果您想要排定任務在某些時間點運行,那麼您可以使用標準 API中的Timer與TimerTask。
視窗程式
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<br>认识 Spring <br> 来认识 Spring 的一些特性,并初步了解一下什么叫作 IoC?什么叫作 DI? <br>简介 Spring <br>Inversion of Control <br>Dependency Injection <br><br><br>核心容器 <br> Spring 核心容器实作了 IoC,BeanFactory 与 ApplicationContext 的运用是了解 Spring 的重点所在。 <br>管理 Bean <br>从第一个 Spring 应用程式开始,逐步了解何谓依赖注入,以及如何使用 Spring 的容器功能来管理 Bean,了解 Bean 在 Spring 容器中的生命周期。<br>第一个 Spring 程式 <br>BeanFactory、 ApplicationContext <br>Type 2 IoC、Type 3 IoC <br>属性参考 <br>自动绑定 <br>集合物件注入 <br>Bean 的生命周期 <br>Bean 进阶管理 <br>理想上对于 Bean 来说,它不需要意识到 Spring 容器的存在,然而有时候 Bean 仍必须知道有关于 Spring 容器或自己的一些讯息,而另一方面,您可能必须让容器对 Bean 进行一些额外处理。<br>不使用XML定义档进行 Bean设置 <br>Aware 相关介面 <br>BeanPostProcessor <br>BeanFactoryPostProcessor <br>PropertyPlaceholderConfigurer <br>PropertyOverrideConfigurer <br>CustomEditorConfigurer <br>讯息与事件 <br>ApplicationContext 除了具备如 BeanFactory 基本的容器管理功能之外,并支援更多应用程式框架的特性,像是资源的取得、讯息解析、事件的处理与传播。<br>Resource 的取得 <br>解析文字讯息 <br>倾听事件 <br>事件传播 <br><br><br>AOP(Aspect-Oriented Programming) <br> 在一个服务的流程中插入与服务无关的逻辑(例如Logging、Security),这样的逻辑称为 Cross-cutting concerns,将 Crossing-cutting concerns 独立出来为一个物件,这样的特殊物件称之为 Aspect,Aspect-oriented programming 着重在 Aspect 的设计及与应用程式的缝合(Weave)。<br><br>AOP 入门 <br>AOP 的观念与术语都不是很直觉,可以先从代理机制(Spring 实现 AOP 的一种方式)来看看实际的例子,从而了解 AOP 的观念与各种术语。<br>从代理机制初探 AOP <br>动态代理<br><br>AOP 观念与术语 <br>Spring AOP <br>Advices <br>Advices 包括了Aspect 的真正逻辑,由于缝合至Targets的时机不同,Spring 提供了几种不同的 Advices。<br>Before Advice <br>After Advice <br>Around Advice <br>Throw Advice <br>Pointcut、Advisor <br>Pointcut 定义了 Advice 的应用时机,在 Spring 中,使用 PointcutAdvisor 将 Pointcut 与 Advice 结合成为一个物件,Spring 中大部分内建的 Pointcut 都有对应的 PointcutAdvisor。<br>NameMatchMethodPointcutAdvisor <br>RegExpMethodPointcutAdvisor <br>ControlFlowPointcut <br>Pointcut 介面 <br>Pointcut 交集、联集操作 <br>Introduction <br>为特殊的 Advice,它影响的不是方法的流程,而是影响整个物件的行为,为物件动态 mixin 职责。<br>IntroductionInterceptor <br>DelegatingIntroductionInterceptor <br>Autoproxing <br>自动代理可以让您不用为每一个要被 Advised 的 Target 手动定义代理物件,透过 Bean 名称或是 Pointcut 的比对,自动为符合的 Target 建立代理物件。<br>BeanNameAutoProxyCreator <br>DefaultAdvisorAutoProxyCreator <br><br><br>持久层 <br> 来看看 Spring 的 IoC 容器与 AOP 框架如何应用于持久层,包括了资料库、交易等相关议题。 <br>资料库存取 <br>Spring 提供了 DAO 框架,让应用程式开发时无须耦合于特定资料库技术。<br>Spring 的 DAO 支持 <br>DataSource 注入 <br>DataSource 置换 <br>JDBC 支援 <br>Spring 在 JDBC 的使用上提供了几个类别,让您可以简化 JDBC 在使用时的流程。<br>使用 JdbcTemplate <br>JdbcTemplate 执行与更新<br><br>JdbcTemplate - 查询 <br>以物件方式进行操作 <br>DataFieldMaxValueIncrementer <br>交易管理 <br>Spring 提供编程式的交易管理(Programmatic transaction management)与宣告式的交易管理(Declarative transaction management),为不同的交易实作提供了一致的编程模型。<br>Spring 对交易的支援 <br>JDBC 编程式交易管理 <br>JDBC 宣告式交易管理 <br>交易的属性介绍 <br>TransactionAttributeSource、 TransactionAttribute <br>Hibernate 支援 <br>Spring 整合了对 Hibernate 的设定,并提供有 HibernateTemplate 等类别,让您在结合 Hibernate 时可以简化使用上的流程。<br>第一个 Hibernate 程式 <br>SessionFactory 注入 <br>HibernateTemplate <br>Hibernate 编程交易管理 <br>Hibernate 宣告式交易管理 <br><br><br>Web 层 <br> Spring 提供了 MVC Web 框架,您可以善用 IoC 容器在依赖注入上的好处,另一方面,Spring 也致力于与其它的 Web 框架的整合。 <br>Spring MVC 入门 <br>从一个最简单的 Spring Web 应用程式,来看看 Spring MVC 框架的架构与 API 组成元素。<br>第一个 Spring MVC 程式 <br>WebApplicationContext <br>Handler Mapping <br>Handler Interceptor <br>Controller 继承架构 <br>ModelAndView <br>View Resolver <br>Exception Resolver <br>使用 Controller 相关类别 <br>与其它 Web 框架的 Action 物件不同的是,Spring 提供了丰富的 Controller 相关类别,让您可以依需求来制作自己所需的 Controller 物件。<br>AbstractController <br>MultiActionController 与 ParameterMethodNameResolver <br>MultiActionController 与 PropertiesMethodNameResolver <br>ParameterizableViewController <br>AbstractCommandController <br>AbstractFormController <br>SimpleFormController <br>AbstractWizardFormController <br>ThrowawayController <br>搭配 Controller 的类别 <br>介绍如何在 Controller上搭配使用验证器(Validator)、如何实作Command资料的型态转换,以及如何使用Spring的相关API来实作档案上传的功能。<br>实作 Validator <br>使用 PropertyEditor <br>档案上传<br><br><br><br>View层方案、Web框架整合 <br> 当使用JSP作为View层技术时,您可以结合JSTL以及Spring提供的标签,而除了JSP技术作为View层之外,Spring还提供了不同 View层技术的解决方案,您甚至可以定义自己的View层技术实现。 <br>JSP View 层 <br>当使用 JSP 作为 View 层技术时,您可以结合 JSTL 以及 Spring 提供的标签。<br>结合 JSTL <br><spring:bind> 标签 <br>数据绑定的几个方法 <br><spring:message> 标签 <br><spring:transform> 标签 <br>其它 View 层 <br>除了 JSP View 层技术之外,您还可以使用其它的 View 层技术,或建立自己的 View Class。<br>以 Tiles 为例 <br>自订 View Class <br>与其它 Web 框架的整合 <br>您可以将 Spring 与现在的一些 Web 框架结合在一起,重点都在于如何让 Web 框架意识到 Spring 的存在。<br>第一个 Struts 程式 <br>在 Struts 中整合 Spring <br>第一个 JSF 程式 <br>在 JSF 中整合 Spring <br><br><br>其它 <br> Spring 提供了简化且一致的方式,让您在使用一些 API 或服务时更加简单。 <br>远程(Remoting) <br>Spring 提供了一致的使用方式,即使所采用的远程服务技术不尽相同,在 Spring 中运用它们的方式却是一致的。<br>RMI <br>Hessian、 Burlap <br>Http Invoker <br>邮件 <br>对于邮件发送服务的支援是由Spring的 org.springframework.mail.MailSender介面所定义,它有两个实作类别, org.springframework.mail.cos.CosMailSenderImpl与 org.springframework.mail.javamail.JavaMailSenderImpl。<br>简单邮件 <br>HTML 邮件 <br>内嵌图片或附档 <br>排程 <br>Spring则对 java.util.Timer提供了抽象封装,让您可以善用Spring的容器管理功能,而Spring对Quartz进行了封装,让它在使用上更加方便。<br>使用 TimerTask <br>使用 MethodInvokingTimerTaskFactoryBean <br>使用 Quartz <br>使用 MethodInvokingJobDetailFactoryBean <br>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值