javascript
Spring JSR-250 注释
轉載自??Spring JSR-250 注釋
Spring JSR-250 注釋
Spring還使用基于 JSR-250 注釋,它包括 @PostConstruct, @PreDestroy 和 @Resource 注釋。因為你已經有了其他的選擇,盡管這些注釋并不是真正所需要的,但是關于它們仍然讓我給出一個簡短的介紹。
@PostConstruct 和 @PreDestroy 注釋:
為了定義一個 bean 的安裝和卸載,我們使用?init-method?和/或?destroy-method?參數簡單的聲明一下?。init-method 屬性指定了一個方法,該方法在 bean 的實例化階段會立即被調用。同樣地,destroy-method 指定了一個方法,該方法只在一個 bean 從容器中刪除之前被調用。
你可以使用?@PostConstruct?注釋作為初始化回調函數的一個替代,@PreDestroy?注釋作為銷毀回調函數的一個替代,其解釋如下示例所示。
示例
讓我們使 Eclipse IDE 處于工作狀態,請按照下列步驟創建一個 Spring 應用程序:
| 1 | 創建一個名為?SpringExample?的項目,并且在所創建項目的?src?文件夾下創建一個名為?com.tutorialspoint?的包。 |
| 2 | 使用?Add External JARs?選項添加所需的 Spring 庫文件,就如在?Spring Hello World Example?章節中解釋的那樣。 |
| 3 | 在?com.tutorialspoint?包下創建 Java 類?HelloWorld?和?MainApp。 |
| 4 | 在?src?文件夾下創建 Beans 配置文件?Beans.xml。 |
| 5 | 最后一步是創建所有 Java 文件和 Bean 配置文件的內容,并且按如下解釋的那樣運行應用程序。 |
這里是?HelloWorld.java?文件的內容:
package com.tutorialspoint; import javax.annotation.*; public class HelloWorld {private String message;public void setMessage(String message){this.message = message;}public String getMessage(){System.out.println("Your Message : " + message);return message;}@PostConstructpublic void init(){System.out.println("Bean is going through init.");}@PreDestroypublic void destroy(){System.out.println("Bean will destroy now.");} }下面是?MainApp.java?文件的內容。這里你需要注冊一個關閉鉤?registerShutdownHook()?方法,該方法在 AbstractApplicationContext 類中被聲明。這將確保一個完美的關閉并調用相關的銷毀方法。
package com.tutorialspoint; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainApp {public static void main(String[] args) {AbstractApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");HelloWorld obj = (HelloWorld) context.getBean("helloWorld");obj.getMessage();context.registerShutdownHook();} }下面是配置文件?Beans.xml,該文件在初始化和銷毀方法中需要使用。
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:annotation-config/><bean id="helloWorld" class="com.tutorialspoint.HelloWorld"init-method="init" destroy-method="destroy"><property name="message" value="Hello World!"/></bean></beans>一旦你在源文件和 bean 配置文件中完成了上面兩處改變,讓我們運行一下應用程序。如果你的應用程序一切都正常的話,這將會輸出以下消息:
Bean is going through init. Your Message : Hello World! Bean will destroy now.@Resource 注釋:
你可以在字段中或者 setter 方法中使用?@Resource?注釋,它和在 Java EE 5 中的運作是一樣的。@Resource 注釋使用一個 ‘name’ 屬性,該屬性以一個 bean 名稱的形式被注入。你可以說,它遵循?by-name?自動連接語義,如下面的示例所示:
package com.tutorialspoint; import javax.annotation.Resource; public class TextEditor {private SpellChecker spellChecker;@Resource(name= "spellChecker")public void setSpellChecker( SpellChecker spellChecker ){this.spellChecker = spellChecker;}public SpellChecker getSpellChecker(){return spellChecker;}public void spellCheck(){spellChecker.checkSpelling();} }如果沒有明確地指定一個 ‘name’,默認名稱源于字段名或者 setter 方法。在字段的情況下,它使用的是字段名;在一個 setter 方法情況下,它使用的是 bean 屬性名稱。
總結
以上是生活随笔為你收集整理的Spring JSR-250 注释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring 基于注解的配置
- 下一篇: 6000元电脑的配置(电脑6000配置)