首頁 >Java >java教程 >淺析spring和springboot的註解

淺析spring和springboot的註解

不言
不言轉載
2018-10-15 16:03:292268瀏覽

這篇文章帶給大家的內容是關於淺析spring和springboot的註解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助

@ConfigurationProperties

可以非常方便的把資源檔案中的內容綁定到物件上

##@Value( "${app.name}")

注入簡單值

@Import

透過導入的方式實作把實例加入springIOC容器中

/**
 * 定义一个圆形
 *
 * @author zhangqh
 * @date 2018年5月1日
 */
public class Circular {
}
/**
 * 定义一个正方形
 *
 * @author zhangqh
 * @date 2018年5月1日
 */
public class Square {
}

MainConfig註解配置中增加@Import註解如下:

@Import({Square.class,Circular.class})
@Configuration
public class MainConfig
AnnotationConfigApplicationContext applicationContext2 = new AnnotationConfigApplicationContext(MainConfig.class);
String[] beanNames = applicationContext2.getBeanDefinitionNames();
for(int i=0;i<beanNames.length;i++){
    System.out.println("bean名称为==="+beanNames[i]);
}

運行結果:

bean名称为===mainConfig
bean名称为===com.zhang.bean.Square
bean名称为===com.zhang.bean.Circular

#@RequestMapping

這個註解可以用於類別和方法上,用於類別上,表示父路徑,如類別上是demo,方法上是/demo1,那麼存取路徑就是demo/demo1

該註解有六個屬性:

params:指定request中必須包含某些參數值是,才讓該方法處理。
headers:指定request中必須包含某些指定的header值,才能讓此方法處理請求。
value:指定要求的實際位址,指定的位址可以是URI Template 模式
method:指定要求的method類型, GET、POST、PUT、DELETE等
consumes:指定處理請求的提交內容類型(Content-Type),如application/json,text/html;
produces:指定傳回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才傳回

#@PathVariable

對應路徑上的變量,用在參數前,路徑上的變數名需和參數名稱一致

RequestMapping("demo/demo1/{name}")public String say(@PathVariable String name){
}

@RequestParam

和以下程式碼相同的

String name =request.getParameter("name ")。

@RequestBody

是指方法參數被綁定到HTTP請求Body上,前端就不能用表單的方式提交了,需要用json的方式提交。

@RequestMapping(value = "/something", method = RequestMethod.PUT)
public void handle(@RequestBody String body,@RequestBody User user){
   //可以绑定自定义的对象类型
}

@ResponseBody

表示輸出的是json格式的資料。

@ModelAttribute

1.運用在參數上,會將客戶端傳遞過來的參數按名稱注入到指定物件中,並且會將這個物件自動加入ModelMap中,方便View層使用;

2.運用在方法上,會在每一個@RequestMapping標註的方法前執行,如果有回傳值,則自動將該回傳值加入ModelMap中;

@Bean

相當於XML中的60e23eb984d18edbb092da6b8f295aba4bb0e59fd50cbfe6f6ce2215b9d94243,放在方法的上面,而不是類,意思是產生一個bean,並交給spring管理。

@Qualifier

當有多個相同類型的Bean時,可以用@Qualifier("name")來指定。與@Autowired配合使用

@Autowired

屬於Spring 的org.springframework.beans.factory.annotation套件下,可用於為類別的屬性、建構器、方法進行註值 

@Resource

不屬於spring的註解,而是來自於JSR-250位於java.annotation套件下,使用該annotation為目標bean指定協作者Bean。 

@Resource的功能相當於@Autowired,皆可標註在欄位或屬性的setter方法上。

注意:

@Autowired註解預設依照型別組裝,如果容器包含多個相同類型的Bean,那麼啟動容器時會報找不到指定型別bean的例外,解決辦法是結合@Qualified註解進行限定,指定注入的bean名稱。

@Resource如果沒有指定name屬性,並且依照預設的名稱仍然找不到依賴物件時, @Resource註解會回退到按類型組裝。但一旦指定了name屬性,就只能按名稱組裝了。

@Autowired註解進行組裝容易拋出異常,特別是組裝的bean類型有多個的時候,而解決的辦法是需要在增加@Qualitied進行限定。

元件類別註解

@Component :標準一個普通的spring Bean類別。 

@Repository:標註一個DAO元件類別。 
@Service:標註一個業務邏輯元件類別。 
@Controller:標註一個控制器元件類別。 

@Component可以取代@Repository、@Service、@Controller,因為這三個註解是被@Component標註的。被註解的java類別當做Bean實例,Bean實例的名稱預設是Bean類別的首字母小寫,其他部分不變。 @Service也可以自訂Bean名稱,但必須是唯一的!

@SpringBootApplication

包含@Configuration、@EnableAutoConfiguration、@ComponentScan

通常用在啟動類別上。

@ComponentScan

元件掃描。如果掃描到有@Component @Controller @Service等這些註解的類別,則把這些類別註冊為bean。

@Configuration

指出該類別是Bean 配置的資訊來源,相當於XML中的3c9fdce8078791299ca92e41bddc2b8fa6748f3712e7c0e1f60ffca24b3db7b0,一般加在主類上。

@EnableAutoConfiguration

#讓 Spring Boot 根據應用程式所宣告的依賴來對 Spring 框架進行自動配置,一般會加在主類別上。

@Profiles
Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。
任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机。

@Configuration
@Profile("prod")public class ProductionConfiguration {    // ...}

以上是淺析spring和springboot的註解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除