中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring核心注釋如何使用

發布時間:2021-12-23 09:48:45 來源:億速云 閱讀:173 作者:iii 欄目:開發技術

本篇內容主要講解“Spring核心注釋如何使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spring核心注釋如何使用”吧!

這是所有已知的Spring核心注釋的列表。

Spring核心注釋如何使用

@Autowired

我們可以使用  @Autowired 注釋  來標記Spring將要解析和注入的依賴關系。我們可以將這個注釋與構造函數,setter或字段注入一起使用。

構造函數注入:

@RestController
公共 類 CustomerController {
    私人 CustomerService  customerService ;

    @Autowired
    public  CustomerController(CustomerService  customerService){
        這個。customerService  =  customerService ;
    }
}

二傳手注射:

進口 組織。彈簧框架。豆子。工廠。注釋。自動裝配 ;
進口 組織。彈簧框架。網絡。綁定。注釋。RestController ;
@RestController
公共 類 CustomerController {
    私人 CustomerService  customerService ;
    @Autowired
    public  void  setCustomerService(CustomerService  customerService){
        這個。customerService  =  customerService ;
    }
}

現場注入:

進口 組織。彈簧框架。豆子。工廠。注釋。自動裝配 ;
進口 組織。彈簧框架。網絡。綁定。注釋。RestController ;
@RestController
公共 類 CustomerController {
    @Autowired
    私人 CustomerService  customerService ;
}
有關更多詳細信息,請訪問我們關于@Autowired和 Spring依賴注入指南的文章。

@豆

  •  @Bean 是方法級注釋和XML元素的直接模擬。注釋支持一些提供的屬性,例如init-method,destroy-method,auto-wiring和name。

  • 您可以在帶@Bean 注釋@Configuration或帶  注釋的@Component類中使用   注釋   。

以下是@Bean方法聲明的簡單示例  :

進口 組織。彈簧框架。背景。注釋。豆 ;
進口 組織。彈簧框架。背景。注釋。配置 ;
進口 com。公司名稱。projectname。客戶。客戶服務 ;
進口 com。公司名稱。projectname。訂單。OrderService ;
@組態
公共 類 申請 {
    @豆
    public  CustomerService  customerService(){
        返回 new  CustomerService();
    }
    @豆
    public  OrderService  orderService(){
        返回 新的 OrderService();
    }
}

上述配置等效于以下Spring XML:

< beans >
        < bean  id = “customerService”  class = “com.companyname.projectname.CustomerService” />
        < bean  id = “orderService”  class = “com.companyname.projectname.OrderService” />
</ beans >
閱讀@Bean 本文中有關注釋的  更多信息  Spring @Bean Annotation with Example。

@Qualifier

此注釋有助于微調基于注釋的自動布線。可能存在這樣的情況:我們創建多個相同類型的bean,并且只想使用屬性連接其中一個bean。這可以使用@Qualifier 注釋和   @Autowired 注釋來控制  。

示例:考慮使用  EmailService 和  SMSService 類來實現單個   MessageService 接口。

MessageService 為多個消息服務實現創建  接口。

公共 接口 MessageService {
    public  void  sendMsg(String  message);
}

接下來,創建實現:   EmailService 和  SMSService

公共 類 EmailService  實現 MessageService {
    public  void  sendMsg(String  message){
         系統。出。println(消息);
    }
}
公共 類 SMSService  實現 MessageService {
    public  void  sendMsg(String  message){
         系統。出。println(消息);
    }
}

是時候看看@Qualifier 注釋的用法了  。

公共 接口 MessageProcessor {
    public  void  processMsg(String  message);
}
公共 類 MessageProcessorImpl  實現 MessageProcessor {
    private  MessageService  messageService ;
    //基于setter的DI
    @Autowired
    @Qualifier(“emailService”)
    public  void  setMessageService(MessageService  messageService){
        這個。messageService  =  messageService ;
    }
    //基于構造函數的DI
    @Autowired
    public  MessageProcessorImpl(@Qualifier(“emailService”)MessageService  messageService){
        這個。messageService  =  messageService ;
    }
    public  void  processMsg(String  message){
        messageService。sendMsg(message);
    }
}
在本文中閱讀有關此注釋的更多信息:  Spring @Qualifier Annotation示例。

@需要

的  @Required 注釋是一個方法級注釋和施加到bean的setter方法。

此注釋僅指示必須將setter方法配置為在配置時使用值依賴注入。

例如,  @Required setter方法標記了我們想要通過XML填充的依賴項:

@需要
void  setColor(String  color){
    這個。color  =  color ;
}
< bean  class = “com.javaguides.spring.Car” >
    < property  name = “color”  value = “green”  />
</ bean >

否則,   BeanInitializationException 將被拋出。

@值

Spring  @Value 注釋用于為變量和方法參數指定默認值。我們可以使用@Value 注釋來讀取Spring環境變量以及系統變量  。

Spring  @Value 注釋也支持SpEL。讓我們看一下使用@Value 注釋的一些示例  。

示例:我們可以使用@Value 注釋為類屬性指定默認值  。

@Value(“默認DBConfiguration”)
private  String  defaultName ;

該  @Value 注釋參數可以是只有字符串,但春天嘗試將其轉換為指定的類型。以下代碼將正常工作,并將布爾值和整數值分配給變量。

@Value(“true”)
private  boolean  defaultBoolean ;

@Value(“10”)
private  int  defaultInt ;

這演示了Spring   @Value -  Spring Environment Property

@Value(“$ {APP_NAME_NOT_FOUND}”)
private  String  defaultAppName ;

接下來,使用@Value 注釋分配系統變量  。

@Value(“$ {java.home}”)
private  String  javaHome ;
@Value(“$ {HOME}”)
private  String  homeDir ;

春天  @Value  - SpEL

@Value(“#{ systemProperties ['java.home']}”)
private  String  javaHome ;

@依賴于取決于

@DependsOn 注釋可以強制的Spring IoC容器中的bean,它是由注釋之前初始化一個或多個bean   @DependsOn 注釋。

所述  @DependsOn 注釋可以在直接或間接地注釋與任何類使用   @Component 或與所述注解的方法  @Bean。

示例:讓我們創建   FirstBean 和   SecondBean 類。在此示例中,   SecondBean 在bean之前初始化   FirstBean

公共 類 FirstBean {
    @Autowired
    private  SecondBean  secondBean ;
}
公共 類 SecondBean {
    public  SecondBean(){
        系統。出。println(“通過Constuctor初始化的SecondBean”);
    }
}

基于配置類在Java中聲明上述bean。

@組態
public  class  AppConfig {
    @Bean(“ firstBean ”)
    @DependsOn(value  = {
        “secondBean”
    })
    公共 FirstBean  firstBean(){
        返回 新的 FirstBean();
    }
    @Bean(“secondBean”)
    public  SecondBean  secondBean(){
        返回 new  SecondBean();
    }
}
閱讀有關Spring上@DependsOn注釋的更多信息 - @DependsOn注釋示例。

@懶

默認情況下,Spring IoC容器在應用程序啟動時創建并初始化所有單例bean。我們可以通過使用@Lazy 注釋來防止單例bean的這種預初始化  。

所述   @Lazy 注釋可以在任何類中使用,與直接或間接地注釋   @Component 或與所述注解的方法  @Bean。

示例:考慮我們有兩個bean -  FirstBean 和   SecondBean。在此示例中,我們將FirstBean 使用   @Lazy注釋顯式加載   。

公共 類 FirstBean {
    public  void  test(){
        系統。出。println(“FirstBean類的方法”);
    }
}
公共 類 SecondBean {
    public  void  test(){
        系統。出。println(“SecondBean類的方法”);
    }
}

基于配置類在Java中聲明上述bean。

@組態
public  class  AppConfig {
    @Lazy(value  =  true)
    @豆
    公共 FirstBean  firstBean(){
        返回 新的 FirstBean();
    }
    @豆
    public  SecondBean  secondBean(){
        返回 new  SecondBean();
    }
}

我們可以看到,bean  secondBean 由Spring容器初始化,而bean  firstBean 則被顯式初始化。

閱讀有關@Lazy  注釋的更多信息,  并在Spring上提供完整的示例 - @Lazy Annotation示例。

@抬頭

注釋的方法   @Lookup 告訴Spring在我們調用它時返回方法返回類型的實例。

有關此注釋的詳細信息,請參見 Spring @LookUp Annotation。

@主

@Primary 當存在多個相同類型的bean時,我們使用它   給bean更高的優先級。

@零件
@主
class  Car  實現 Vehicle {}
@零件
class  Bike  實現 Vehicle {}

@零件
class  Driver {
    @Autowired
    車輛 車輛 ;
}
@零件
class  Biker {
    @Autowired
    @Qualifier(“自行車”)
    車輛 車輛 ;
}
在Spring上閱讀有關此注釋的更多信息 - @Primary Annotation示例。

@范圍

我們使用@Scope 注釋來定義類的范圍或  @Bean定義。它可以是單例,原型,請求,會話,globalSession或某些自定義范圍。  @Component 

例如:

@零件
@Scope(值 =  ConfigurableBeanFactory。SCOPE_SINGLETON)
公共 類 TwitterMessageService  實現 MessageService {
}
@零件
@Scope(值 =  ConfigurableBeanFactory。SCOPE_PROTOTYPE)
公共 類 TwitterMessageService  實現 MessageService {
}
了解更多關于在@Scope注解 春@Scope注解與辛格爾頓范圍實例和 春天@Scope注解與原型作用域實例。

@輪廓

如果我們希望Spring 只在特定的配置文件處于活動狀態時才使用  @Component 類或  @Bean方法,我們可以用它來標記它   @Profile。我們可以使用注釋的value參數配置配置文件的名稱:

@零件
@Profile(“sportDay”)
class  Bike  實現 Vehicle {}

@進口

該   @Import 注釋指示一個或多個@Configuration類進口。

例如:在基于Java的配置中,Spring提供了  @Import  注釋,允許從另一個配置類加載@Bean定義。

@組態
公共 類 ConfigA {
    @豆
    public  A  a(){
        返回 新的 A();
    }
}
@組態
@Import(ConfigA。類)
公共 類 ConfigB {
    @豆
    public  B  b(){
        return  new  B();
    }
}

現在,在實例化上下文時,不需要同時指定  ConfigA類和ConfigB類,只需要顯式提供ConfigB

閱讀有關Spring @Import Annotation上@Import注釋的更多信息 。

@ImportResource

Spring提供了一個  @ImportResource 注釋,用于將bean從applicationContext.xml文件加載到ApplicationContext中。例如:考慮我們在類路徑上有applicationContext.xml Spring bean配置XML文件。

@組態
@ImportResource({ “classpath *:applicationContext.xml” })
公共 類 XmlConfiguration {
}
通過Spring @ImportResource Annotation的完整示例,閱讀有關此注釋的更多信息 。

@PropertySource

該   @PropertySource 注釋提供了一種方便的聲明性機制,用于添加  PropertySource Spring的Eenvironment以與@Configuration類一起使用  。

例如,我們從文件config.properties文件中讀取數據庫配置,并使用Environment 將這些屬性值設置為  DataSourceConfig類。

進口 組織。彈簧框架。豆子。工廠。InitializingBean ;
進口 組織。彈簧框架。豆子。工廠。注釋。自動裝配 ;
進口 組織。彈簧框架。背景。注釋。配置 ;
進口 組織。彈簧框架。背景。注釋。PropertySource ;
進口 組織。彈簧框架。核心。ENV。環境 ;
@組態
@PropertySource(“classpath:config.properties”)
公共 類 ProperySourceDemo  實現 InitializingBean {
    @Autowired
    環境 ENV ;
    @覆蓋
    public  void  afterPropertiesSet()拋出 Exception {
        setDatabaseConfig();
    }
    private  void  setDatabaseConfig(){
        DataSourceConfig  config  =  new  DataSourceConfig();
        配置。setDriver(ENV。的getProperty(“jdbc.driver” ));
        配置。setUrl(ENV。的getProperty(“jdbc.url” ));
        配置。setUsername(ENV。的getProperty(“jdbc.username” ));
        配置。setPassword(ENV。的getProperty(“jdbc.password” ));
        系統。出。的println(配置。的toString());
    }
}
閱讀有關Spring @PropertySource Annotation with Example的此注釋的更多信息 。

@PropertySources

我們可以使用此批注指定多個   @PropertySource  配置:

 @PropertySources({
  @PropertySource(“classpath:config.properties”),
  @PropertySource(“classpath:db.properties”)
 })
 public  class  AppConfig {
  // ...
 }

到此,相信大家對“Spring核心注釋如何使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

雷州市| 若尔盖县| 江西省| 瑞安市| 玛多县| 保德县| 和田县| 西藏| 信阳市| 吴江市| 隆德县| 青海省| 乐亭县| 惠州市| 敖汉旗| 库车县| 福州市| 资兴市| 乌拉特前旗| 彰化县| 师宗县| 姚安县| 富蕴县| 温宿县| 陕西省| 正宁县| 乌鲁木齐县| 盘山县| 孙吴县| 北安市| 大同市| 大城县| 墨江| 南木林县| 安顺市| 日喀则市| 南涧| 阳山县| 承德县| 绿春县| 濉溪县|