1. 程式人生 > >常用註解(Annotation)整理

常用註解(Annotation)整理

1.Java中@Autowired或@Resource這兩個註解功能都是相同的,這兩個註解的區別:@Autowired預設按型別裝配,@Resource預設按名稱裝配,當找不到與名稱匹配的bean時才會按型別裝配。
[email protected]、@Qualifier、@Resource三者的區別:

簡單理解:
@Autowired 預設根據型別注入;
@Resource 預設根據名字注入,其次按照型別注入;
@Autowired @Qualifier(“userService”) 兩個結合起來預設按型別注入,其次按名字注入。

3.spring/springMVC中常用註解對比:

@Configuration — spring配置檔案中的<beans></beans>

@Bean — spring配置檔案中的<bean></bean>

@Autowired 、@Named 兩個註解可以互換使用

@Component 、@Inject兩個註解可以互換使用

@ContextConfiguration — spring整個配置檔案(applicationContext.xml)

@componentScan — spring配置檔案中的<context:component-scan base-package=“xxx”/>

@Service(“name”) — spring配置檔案中的<bean class="xxx" id="name"> id=name

@Scope 代表spring容器的生命週期,取值有singleton、prototype 、request 、session 、global session五種。
注意:request、session和global session型別只實用於web程式,通常是和XmlWebApplicationContext共同使用。

@EnableScheduling:開啟對定時任務的支援;
@Scheduled:宣告一個定時任務;

@Conditional:滿足一定條件來建立一個特定的bean;

@RequestHeader : 可以把Request請求header部分的值繫結到方法的引數上。

Request的Header部分:
Host                    localhost:8080 
Accept                  text/html,application/xhtml+xml,application/xml;q=0.9 
Accept-Language         fr,en-gb;q=0.7,en;q=0.3 
Accept-Encoding         gzip,deflate 
Accept-Charset          ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive              300 

@RequestMapping("/displayHeaderInfo.do")
public void displayHeaderInfo(
          @RequestHeader("Accept-Encoding") String encoding,
          @RequestHeader("Keep-Alive") long keepAlive) {
     // ...
}
上面的程式碼,把request header部分的 Accept-Encoding的值,繫結到引數encoding上了, Keep-Alive header的值繫結到引數keepAlive上。

@CookieValue : 可以把Request header中關於cookie的值繫結到方法的引數上。

JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84  

@RequestMapping("/displayHeaderInfo.do") 
public void displayHeaderInfo(@CookieValue("JSESSIONID") String cookie)  { 
  //... 
}
即把JSESSIONID的值繫結到引數cookie上。

@RequestParam :獲取引數;SpringMVC獲取後臺控制層引數有兩種:
1.request.getParameter(“屬性名”); [email protected]

1.常用來處理簡單型別的繫結,通過Request.getParameter() 獲取的String可直接轉換為簡單型別的情況( String--> 簡單型別的轉換操作由ConversionService配置的轉換器來完成);因為使用request.getParameter()方式獲取引數,所以可以處理get 方式中queryString的值,也可以處理post方式中 body data的值;
2.用來處理Content-Type: 為 application/x-www-form-urlencoded編碼的內容,提交方式GET、POST;
3.該註解有兩個屬性: value、required; value用來指定要傳入值的id名稱,required用來指示引數是否必須繫結;
@Controller 
@RequestMapping("/pets") 
@SessionAttributes("pet") 
public class EditPetForm { 
    // ... 
    @RequestMapping(method = RequestMethod.GET) 
    public String setupForm(@RequestParam("petId") int petId, ModelMap model) { 
        Pet pet = this.clinic.loadPet(petId); 
        model.addAttribute("pet", pet); 
        return "petForm"; 
    } 
    // ...

@RequestBody : 將HTTP請求正文轉換為適合的HttpMessageConverter物件。[SpringMVC]
@ResponseBody :將內容或物件作為 HTTP 響應正文返回,並呼叫適合HttpMessageConverter的Adapter轉換物件,寫入輸出流。[SpringMVC]

HttpMessageConverter介面,需要開啟<mvc:annotation-driven  />。
AnnotationMethodHandlerAdapter將會初始化7個轉換器,可以通過呼叫AnnotationMethodHandlerAdapter的getMessageConverts()方法來獲取轉換器的一個集合 List<HttpMessageConverter>

引用:
ByteArrayHttpMessageConverter
StringHttpMessageConverter
ResourceHttpMessageConverter
SourceHttpMessageConverter
XmlAwareFormHttpMessageConverter
Jaxb2RootElementHttpMessageConverter
MappingJacksonHttpMessageConverter

@SessionAttributes:用來繫結HttpSession中的attribute物件的值,便於在方法中的引數裡使用。該註解有value、types兩個屬性,可以通過名字和型別指定要使用的attribute 物件;

@Controller 
@RequestMapping("/editPet.do") 
@SessionAttributes("pet") 
public class EditPetForm { 
    // ... 
}

@ModelAttribute:
該註解有兩個用法,一個是用於方法上,一個是用於引數上;
用於方法上時: 通常用來在處理@RequestMapping之前,為請求繫結需要從後臺查詢的model;
用於引數上時: 用來通過名稱對應,把相應名稱的值繫結到註解的引數bean上;要繫結的值來源於:
1. @SessionAttributes 啟用的attribute 物件上;
[email protected] 用於方法上時指定的model物件;
3.上述兩種情況都沒有時,new一個需要繫結的bean物件,然後把request中按名稱對應的方式把值繫結到bean中。

用到方法上@ModelAttribute的示例程式碼:
// Add one attribute 
// The return value of the method is added to the model under the name "account" 
// You can customize the name via @ModelAttribute("myAccount") 
@ModelAttribute 
public Account addAccount(@RequestParam String number) { 
    return accountManager.findAccount(number); 
}
這種方式實際的效果就是在呼叫@RequestMapping的方法之前,為request物件的model裡put(“account”, Account);

用在引數上的@ModelAttribute示例程式碼:
@RequestMapping(value="/owners/{ownerId}/pets/{petId}/edit", method = RequestMethod.POST) 
public String processSubmit(@ModelAttribute Pet pet) { 
    //......
}  
首先查詢 @SessionAttributes有無繫結的Pet物件,若沒有則查詢@ModelAttribute方法層面上是否綁定了Pet物件,若沒有則將URI template中的值按對應的名稱繫結到Pet物件的各屬性上。

問題:在不給定註解的情況下,引數是怎樣繫結的?
通過分析AnnotationMethodHandlerAdapter和RequestMappingHandlerAdapter的原始碼發現,方法的引數在不給定引數的情況下:
    若要繫結的物件時簡單型別: 呼叫@RequestParam來處理的。 
    若要繫結的物件時複雜型別: 呼叫@ModelAttribute來處理的。
    這裡的簡單型別指java的原始型別(boolean, int 等)、原始型別物件(Boolean, Int等)、String、Date等ConversionService裡可以直接String轉換成目標物件的型別;

@PathVariable : 當使用@RequestMapping URI template 樣式對映時, 即someUrl/{paramId}, 這時的paramId可通過@Pathvariable註解繫結它傳過來的值到方法的引數上。[SpringMVC]
例如:

@Controller
@RequestMapping("/owners/{ownerId}")
public class RelativePathUriTemplateController {
     @RequestMapping("/pets/{petId}")
     public void findPet(@PathVariable String ownerId,@PathVariable String petId, Model model) {
          // implementation omitted
     }
}

@SuppressWarnings(value=”unchecked”):用於抑制編譯器產生警告資訊。value預設為checked。

@PropertySource:注入配置檔案;

@Value():讀取引數;詳細原理如下講解:

@Value()需要的引數有兩種形式:@Value("#{configProperties['t1.msgname']}")或者@Value("${t1.msgname}")

配置上的區別:
1.@Value("#{configProperties['t1.msgname']}")這種形式的配置中有“configProperties”,其實它指定的是配置檔案的載入物件:配置如下:
<bean id="configProperties"
     class="org.springframework.beans.factory.config.PropertiesFactoryBean">
     <property name="locations">
          <list>
               <value>classpath:/config/t1.properties</value>
          </list>
     </property>
</bean>
這樣配置就可完成對屬性的具體注入了
2.@Value("${t1.msgname}")這種形式不需要指定具體載入物件,這時候需要一個關鍵的物件來完成PreferencesPlaceholderConfigurer,這個物件的配置可以利用上面配置1中的配置,也可以自己直接自定配置檔案路徑。
    如果使用配置1中的配置,可以寫成如下情況:
<bean id="propertyConfigurer"
     class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
     <property name="properties" ref="configProperties" />
</bean>
如果直接指定配置檔案的話,可以寫成如下情況:
<bean id="propertyConfigurer"
     class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
     <property name="location">
          <value>config/t1.properties</value>
     </property>
</bean>

@JmsListener:監聽消費,實現了非同步消費。
在官方文件中已經說明需要支援@JmsListener註解,則需要在任意@Configuration類新增@EnableJms註解,同時還需要配置DefaultJmsListenerContainerFactory的Bean例項:

Bean方式配置:
@Configuration
@EnableJms
public class GatewayActiveMQFactory extends AbstractActiveMQFactory {
     //……
}

XML方式配置:
<jms:annotation-driven/>
<bean id="jmsListenerContainerFactory" class="org.springframework.jms.config.DefaultJmsListenerContainerFactory">
     <property name="connectionFactory" ref="connectionFactory"/>
     <property name="destinationResolver" ref="destinationResolver"/>
     <property name="concurrency" ref="3-10"/>
</bean>

@EnableWs: 啟動webservice。
Spring Boot整合spring-ws開發web service

1.新增依賴
   spring boot的工程,除了spring boot外還需要新增spring-ws和wsdl4j的依賴,當然後面生成程式碼還需要新增maven的jaxb2外掛。
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
     <groupId>wsdl4j</groupId>
     <artifactId>wsdl4j</artifactId>
     <version>1.6.3</version>
</dependency>
2.編寫schema檔案
spring-ws的釋出,都是以一個schema檔案(xsd)定義開始的,它描述了web service的引數以及返回的資料。
下面是官方示例給出的countries.xsd,這裡我們也以它為例,當然名稱空間改掉了,因為等會jaxb2外掛生成程式碼是以它來確定包名的:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
xmlns:tns="UpdateAppAcctSoap";//由程式設計師自己定義 
targetNamespace="UpdateAppAcctSoap"; //由程式設計師自己定義
elementFormDefault="qualified">
     <xs:element name="RequestInfo">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension  base="xs:string" />
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>
    <xs:element name="ResponseInfo">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension  base="xs:string" />
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

    <!--
     <xs:element name="getCountryRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="name" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="getCountryResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="country" type="tns:country"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="country">
        <xs:sequence>
            <xs:element name="name" type="xs:string"/>
            <xs:element name="population" type="xs:int"/>
            <xs:element name="capital" type="xs:string"/>
            <xs:element name="currency" type="tns:currency"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="currency">
        <xs:restriction base="xs:string">
            <xs:enumeration value="GBP"/>
            <xs:enumeration value="EUR"/>
            <xs:enumeration value="PLN"/>
        </xs:restriction>
    </xs:simpleType>
    -->
</xs:schema>
3.新增maven的jaxb2外掛來生成程式碼
jaxb2外掛可以根據描述的xsd檔案來幫我們生成相應的ws程式碼,具體配置如下:
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <id>xjc</id>
            <goals>
                <goal>xjc</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <schemaDirectory>${project.basedir}/src/main/resources//schema</schemaDirectory>
        <outputDirectory>${project.basedir}/src/main/java</outputDirectory>
        <clearOutputDir>false</clearOutputDir>
    </configuration>
</plugin>
配置好外掛然後install一下,這樣web service需要的服務端程式碼就已經幫我們生成好了,根據上面的xsd,生成的程式碼在相應的包下。
4.編寫Endpoint
我們就不再像spring-ws官方那樣再建一個Repository了,這裡直接返回。需要注意PayloadRoot註解當中的namespace和localPart需要和xsd中對應。
@Endpoint
public class UpdateAppAcctSoap extends RestBase {
    private static final String NAMESPACE_URI = "UpdateAppAcctSoap";
    private final Logger logger = LoggerFactory.getLogger(UpdateAppAcctSoap.class);
    @Autowired
    HttpServletRequest request;
    @Autowired
    ILog iLog;
    @Autowired
    IUpdateAppAcctService appAcctService;

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "RequestInfo")
    @ResponsePayload
    public ResponseInfo doService(@RequestPayload RequestInfo requestInfo) {
        iLog.info(logger, getTransNo(request), null, "", requestInfo);
        String res = appAcctService.doService(requestInfo.getValue(), getTransNo(request));
        ResponseInfo responseInfo = new ResponseInfo();
        responseInfo.setValue(res);
        return responseInfo;
    }
}
【RequestInfo類的寫法:】
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "value"
})
@XmlRootElement(name = "RequestInfo", namespace = "UpdateAppAcctSoap")
public class RequestInfo {
    @XmlValue
    protected String value;
    /**
     * 獲取value屬性的值。
     * @return
     *     possible object is
     *     {@link String }  
     */
    public String getValue() {
        return value;
    }
    /**
     * 設定value屬性的值。
     * @param value
     *     allowed object is
     *     {@link String }  
     */
    public void setValue(String value) {
        this.value = value;
    }
}   
【ResponseInfo類的寫法:】
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "value"
})
@XmlRootElement(name = "ResponseInfo", namespace = "UpdateAppAcctSoap")
public class ResponseInfo {
    @XmlValue
    protected String value;
    /**
     * 獲取value屬性的值。
     *
     * @return
     *     possible object is
     *     {@link String }
     *    
     */
    public String getValue() {
        return value;
    }
    /**
     * 設定value屬性的值。
     *
     * @param value
     *     allowed object is
     *     {@link String }
     *    
     */
    public void setValue(String value) {
        this.value = value;
    }
}
5.在spring boot中配置web service
@EnableWs
@Configuration
public class WebServiceConfig extends WsConfigurerAdapter {
    @Bean
    public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
        MessageDispatcherServlet servlet = new MessageDispatcherServlet();
        servlet.setApplicationContext(applicationContext);
        servlet.setTransformWsdlLocations(true);
        return new ServletRegistrationBean(servlet, "/webservice/*");
    }
    @Bean(name = "UpdateAppAcctSoap")
    public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema countriesSchema) {
        DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
        wsdl11Definition.setPortTypeName("UpdateAppAcctSoap");
        wsdl11Definition.setLocationUri("/webservice");
        wsdl11Definition.setTargetNamespace(Access4aConstants.NAMESPACE);
        wsdl11Definition.setSchema(countriesSchema);
        return wsdl11Definition;
    }
    @Bean
    public XsdSchema countriesSchema() {
        return new SimpleXsdSchema(new ClassPathResource("UpdateAppAcctSoap.xsd"));
    }
}
到這裡spring-ws的所有配置和工作都已經完成了,上面的DefaultWsdl11Definition 中的name預設就是釋出的ws的訪問路徑。 

4.Spirng中@PostConstruce和@PreDestroy詳解:
這兩個註解作用於Servlet生命週期的註解,實現Bean初始化之前和銷燬之前的自定義操作。

API文件說明:

@PostConstruct 註釋用於在依賴關係注入完成之後需要執行的方法上,以執行任何初始化。此方法必須在將類放入服務之前呼叫。支援依賴關係注入的所有類都必須支援此註釋。即使類沒有請求注入任何資源,用 PostConstruct 註釋的方法也必須被呼叫。只有一個方法可以用此註釋進行註釋。應用 PostConstruct 註釋的方法必須遵守以下所有標準:該方法不得有任何引數,除非是在 EJB 攔截器 (interceptor) 的情況下,根據 EJB 規範的定義,在這種情況下它將帶有一個 InvocationContext 物件 ;該方法的返回型別必須為 void;該方法不得丟擲已檢查異常;應用 PostConstruct 的方法可以是 publicprotectedpackage privateprivate;除了應用程式客戶端之外,該方法不能是 static;該方法可以是 final;如果該方法丟擲未檢查異常,那麼不得將類放入服務中,除非是能夠處理異常並可從中恢復的 EJB。

使用@PostConstruce和@PreDestroy註解應注意:

  • 只有一個方法可以使用此註釋進行註解;
  • 被註解方法不得有任何引數;
  • 被註解方法返回值為void;
  • 被註解方法不得丟擲已檢查異常;
  • 被註解方法需是非靜態方法;
  • 此方法只會被執行一次;
    Servlet執行流程圖:
    TUPIAN
    在具體Bean的例項化過程中,@PostConstruce註釋的方法,會在構造方法之後,init()方法之前呼叫。
    @PostConstruce主要應用在初始化Servlet時載入一些快取資料。
    注意:此註解會影響服務的啟動時間;在啟動時會掃描WEB-INF/classes的所有檔案和WEB-INF/lib下的所有jar包。
    [email protected]和@RestContoller[SpringMVC] 區別:
    官方文件:
    @RestController is a stereotype annotation that combines @ResponseBody and @Controller.
    意思是:
    @RestController註解相當於@ResponseBody + @Controller合在一起的作用。

  • 如果只是使用@RestController註解Controller,則Controller中的方法無法返回jsp頁面,配置的檢視解析器InternalResourceViewResolver不起作用,返回的內容就是Return 裡的內容。
    例如:本來應該到success.jsp頁面的,則其顯示success.

  • 如果需要返回到指定頁面,則需要用 @Controller配合檢視解析器InternalResourceViewResolver才行。

  • 如果需要返回JSON,XML或自定義mediaType內容到頁面,則需要在對應的方法上加上@ResponseBody註解。

@WiselyConfiguration註解相當於@Configuration + @ComponentScan

6.Enable*註解:
@EnableAspectJAutoProxy:開啟對AspectJ自動代理的支援;
@EnableAsync:開啟非同步方法的支援;
@EnableScheduling:開啟定時任務的支援;
@EnableWebMvc:開啟Web MVC配置的支援;
@EnableConfigurationProperties:開啟對@ConfigurationProperties註解配置Bean的支援;
@EnableJpaRespositories:開啟對Spring Data JPA Repository的支援;
@EnableTransactionManagement:開啟註解式事務的支援;
@EnableCaching:開啟註解式的快取支援;

@ActiveProfiles:宣告活動的profile;
@Profile(“dev”):指定環境;

7.SpringMVC常用註解:
@ControllerAdvice:宣告一個控制器建言(全域性);l
@ExceptionHandler:全域性處理控制器裡的異常;
@InitBinder:定製WebDataBinder;

相關推薦

常用註解Annotation整理

1.Java中@Autowired或@Resource這兩個註解功能都是相同的,這兩個註解的區別:@Autowired預設按型別裝配,@Resource預設按名稱裝配,當找不到與名稱匹配的bean時才會按型別裝配。 [email protected]

Android註解Annotation知識點總結整理

Java提供了Annotations來對程式碼提供一些註解,以解釋、約束程式碼,也可以稱為程式設計的元資料。到底什麼是Annotation呢,舉幾個大家熟悉的例子如@Override(表示過載)、@Deprecated(表示下述方法不推薦使用,通常標註為此會提供推薦方法)等

深入理解Java:註解Annotation--註解處理器

fault this urn 復制代碼 lena ide set java lec 深入理解Java:註解(Annotation)--註解處理器   如果沒有用來讀取註解的方法和工作,那麽註解也就不會比註釋更有用處了。使用註解的過程中,很重要的一部分就是創建於

深入理解Java的註解Annotation註解處理器3

isp 通過反射 out peid 擴展 .cn 自定義註解 忽略 否則 如果沒有用來讀取註解的方法和工作,那麽註解也就不會比註釋更有用處了。使用註解的過程中,很重要的一部分就是創建於使用註解處理器。Java SE5擴展了反射機制的API,以幫助程序員快速的構造自定義註解處

秒懂,Java 註解 Annotation你可以這樣學

face 幹什麽 有一種 博客 作用 習慣 lis 如果 手機 這處圖片引自老羅的博客。為了避免不必要的麻煩,首先聲明我個人比較尊敬老羅的。至於為什麽放這張圖,自然是為本篇博文服務,接下來我自會說明。好了,可以開始今天的博文了。 Annotation 中文譯過來就是註解、

Java 註解 Annotation

null lambda roi 實例 cut exce runt 比較 符號 Java 註解用於為 Java 代碼提供元數據。作為元數據,註解不直接影響你的代碼執行,但也有一些類型的註解實際上可以用於這一目的。Java 註解是從 Java5 開始添加到 Java 的。

秒懂Java 註解 Annotation

能夠 extend tty 來講 hub 開頭 arrays term con 文章開頭先引入一處圖片。 這處圖片引自老羅的博客。為了避免不必要的麻煩,首先聲明我個人比較尊敬老羅的。至於為什麽放這張圖,自然是為本篇博文服務,接下來我自會說明。好了,可以開始今天的博文了。 A

註解Annotation

nali 函數 測試 after har float 等等 特點 類方法 常見註解 註解的概念:Java 註解用於為 Java 代碼提供元數據。作為元數據,註解不直接影響你的代碼執行,但也有一些類型的註解實際上可以用於這一目的。Java 註解是從 Java5 開始添加到 J

【Java基礎】註解Annotation

  Annotation,程式碼裡的特殊標記,在編譯、類載入、執行時被讀取,並執行相應的處理。 使用註解,在不改變原有邏輯的情況下,在原始檔中嵌入一些補充資訊。 Annotation提供了一種為程式元素設定元資料的方法。 Ann

java註解Annotation總結

java註解(Annotation)總結 吐糟時間 註解是什麼 註解有什麼用 註解的分類 怎麼自定義註解 新增屬性 註解的使用 解析執行時(RUNTIME)註解 解析編譯時(CLASS)註解

Java 註解 Annotation淺入深出

Java 註解 (Annotation)淺入深出 本文主要參考與借鑑frank909 文章,但更為簡單,詳細。 Annotation 中文譯過來就是註解、標釋的意思。Annotation是一種應用於類、方法、引數、變數、構造器及包宣告中的特殊修飾符。它是一種由JSR-175標準選擇用來描述元資料的一種工具

Sping註解annotation

1.依賴注入的註解(DI-annotation) @Component註解元件:註冊元件到spring容器中,相當於配置檔案中的bean.         與@Component具有相同功能,不同意義

Springboot的Controller中常用註解

@Controller和@RestController和@ResponseBody @Controller @Controller註解標註類的方法,return時會被檢視處理器識別成靜態檔案的路徑。預設為templates資料夾下。如return "test/hello"表示

Java註解Annotation學習總結

註解的定義 註解通過 @interface 關鍵字進行定義。 public @interface TestAnnotation { } 它的形式跟介面很類似,不過前面多了一個 @ 符號。上面的程式碼就建立了一個名字為 TestAnnotaion 的註解。你可以簡

Java——註解Annotation

註解(Annotation) JDK提供的三個內建註解:@Override、@Deprecated、@SuppressWarnings 1.準確覆寫@Override 檢查當前類中的覆寫方法與父類中定義的同名方法是否相同,如果有任何一個地方不同,編譯報錯 2.過期處理

自定義Java註解annotation

https://www.imooc.com/learn/456  筆記 Java從1.5開始引進註解。 首先解決一個問題,為什麼要學習Java註解? 1.看懂別人寫的程式碼,尤其是框架的程式碼 2.可以是自己寫的程式碼簡潔清晰   現在開始學習Java註解了。  

Spring Boot常用註解

1.概述 在 Spring Boot常用註解(一) - 宣告Bean的註解 中學習了Spring Boot中宣告Bean的註解 那Spring容器中的Bean是怎麼實現自動裝配(依賴)的呢? 這就是接下來學習的注入註解咯 注入Bean的註解: @Au

Spring學習1:控制反轉IoC和依賴注入DI的詳解以及註解annotation開發入門案例

前言 以往的java學習中,我們要想得到一個物件,就把它new出來。如:Apple apple = new Apple(); 在一些複雜的系統中,一個物件A可能依賴於物件B,C等(程式碼表現為A類持有B,C類的物件作為A類的屬性)。以往來說,我們想要使用B,

Java 註解 Annotation你可以這樣學

這處圖片引自老羅的部落格。為了避免不必要的麻煩,首先宣告我個人比較尊敬老羅的。至於為什麼放這張圖,自然是為本篇博文服務,接下來我自會說明。好了,可以開始今天的博文了。Annotation 中文譯過來就是註解、標釋的意思,在 Java 中註解是一個很重要的知識點,但經常還是有點

深入理解Java:註解Annotation自定義註解

要深入學習註解,我們就必須能定義自己的註解,並使用註解,在定義自己的註解之前,我們就必須要了解Java為我們提供的元註解和相關定義註解的語法。 元註解:   元註解的作用就是負責註解其他註解。Java5.0定義了4個標準的meta-annotation型別,它們被用來