本篇內(nèi)容主要講解“Spring核心注釋如何使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Spring核心注釋如何使用”吧!
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比昌邑網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式昌邑網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋昌邑地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。這是所有已知的Spring核心注釋的列表。
我們可以使用 @Autowired
注釋 來標(biāo)記Spring將要解析和注入的依賴關(guān)系。我們可以將這個(gè)注釋與構(gòu)造函數(shù),setter或字段注入一起使用。
構(gòu)造函數(shù)注入:
@RestController
公共 類 CustomerController {
私人 CustomerService customerService ;
@Autowired
public CustomerController(CustomerService customerService){
這個(gè)。customerService = customerService ;
}
}
二傳手注射:
進(jìn)口 組織。彈簧框架。豆子。工廠。注釋。自動(dòng)裝配 ;
進(jìn)口 組織。彈簧框架。網(wǎng)絡(luò)。綁定。注釋。RestController ;
@RestController
公共 類 CustomerController {
私人 CustomerService customerService ;
@Autowired
public void setCustomerService(CustomerService customerService){
這個(gè)。customerService = customerService ;
}
}
現(xiàn)場注入:
進(jìn)口 組織。彈簧框架。豆子。工廠。注釋。自動(dòng)裝配 ;
進(jìn)口 組織。彈簧框架。網(wǎng)絡(luò)。綁定。注釋。RestController ;
@RestController
公共 類 CustomerController {
@Autowired
私人 CustomerService customerService ;
}
有關(guān)更多詳細(xì)信息,請?jiān)L問我們關(guān)于@Autowired和 Spring依賴注入指南的文章。
@Bean
是方法級注釋和XML元素的直接模擬。注釋支持一些提供的屬性,例如init-method,destroy-method,auto-wiring和name。
您可以在帶@Bean
注釋@Configuration
或帶 注釋的@Component
類中使用 注釋 。
以下是@Bean方法聲明的簡單示例 :
進(jìn)口 組織。彈簧框架。背景。注釋。豆 ;
進(jìn)口 組織。彈簧框架。背景。注釋。配置 ;
進(jìn)口 com。公司名稱。projectname??蛻???蛻舴?wù) ;
進(jìn)口 com。公司名稱。projectname。訂單。OrderService ;
@組態(tài)
公共 類 申請 {
@豆
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
本文中有關(guān)注釋的 更多信息 Spring @Bean Annotation with Example。
此注釋有助于微調(diào)基于注釋的自動(dòng)布線。可能存在這樣的情況:我們創(chuàng)建多個(gè)相同類型的bean,并且只想使用屬性連接其中一個(gè)bean。這可以使用@Qualifier
注釋和 @Autowired
注釋來控制 。
示例:考慮使用 EmailService
和 SMSService
類來實(shí)現(xiàn)單個(gè) MessageService
接口。
MessageService
為多個(gè)消息服務(wù)實(shí)現(xiàn)創(chuàng)建 接口。
公共 接口 MessageService {
public void sendMsg(String message);
}
接下來,創(chuàng)建實(shí)現(xiàn): EmailService
和 SMSService
。
公共 類 EmailService 實(shí)現(xiàn) MessageService {
public void sendMsg(String message){
系統(tǒng)。出。println(消息);
}
}
公共 類 SMSService 實(shí)現(xiàn) MessageService {
public void sendMsg(String message){
系統(tǒng)。出。println(消息);
}
}
是時(shí)候看看@Qualifier
注釋的用法了 。
公共 接口 MessageProcessor {
public void processMsg(String message);
}
公共 類 MessageProcessorImpl 實(shí)現(xiàn) MessageProcessor {
private MessageService messageService ;
//基于setter的DI
@Autowired
@Qualifier(“emailService”)
public void setMessageService(MessageService messageService){
這個(gè)。messageService = messageService ;
}
//基于構(gòu)造函數(shù)的DI
@Autowired
public MessageProcessorImpl(@Qualifier(“emailService”)MessageService messageService){
這個(gè)。messageService = messageService ;
}
public void processMsg(String message){
messageService。sendMsg(message);
}
}
在本文中閱讀有關(guān)此注釋的更多信息: Spring @Qualifier Annotation示例。
的 @Required
注釋是一個(gè)方法級注釋和施加到bean的setter方法。
此注釋僅指示必須將setter方法配置為在配置時(shí)使用值依賴注入。
例如, @Required
setter方法標(biāo)記了我們想要通過XML填充的依賴項(xiàng):
@需要
void setColor(String color){
這個(gè)。color = color ;
}
< bean class = “com.javaguides.spring.Car” >
< property name = “color” value = “green” />
bean >
否則, BeanInitializationException
將被拋出。
Spring @Value
注釋用于為變量和方法參數(shù)指定默認(rèn)值。我們可以使用@Value
注釋來讀取Spring環(huán)境變量以及系統(tǒng)變量 。
Spring @Value
注釋也支持SpEL。讓我們看一下使用@Value
注釋的一些示例 。
示例:我們可以使用@Value
注釋為類屬性指定默認(rèn)值 。
@Value(“默認(rèn)DBConfiguration”)
private String defaultName ;
該 @Value
注釋參數(shù)可以是只有字符串,但春天嘗試將其轉(zhuǎn)換為指定的類型。以下代碼將正常工作,并將布爾值和整數(shù)值分配給變量。
@Value(“true”)
private boolean defaultBoolean ;
@Value(“10”)
private int defaultInt ;
這演示了Spring @Value
- Spring Environment Property
@Value(“$ {APP_NAME_NOT_FOUND}”)
private String defaultAppName ;
接下來,使用@Value
注釋分配系統(tǒng)變量 。
@Value(“$ {java.home}”)
private String javaHome ;
@Value(“$ {HOME}”)
private String homeDir ;
春天 @Value
- SpEL
@Value(“#{ systemProperties ['java.home']}”)
private String javaHome ;
該@DependsOn
注釋可以強(qiáng)制的Spring IoC容器中的bean,它是由注釋之前初始化一個(gè)或多個(gè)bean @DependsOn
注釋。
所述 @DependsOn
注釋可以在直接或間接地注釋與任何類使用 @Component
或與所述注解的方法 @Bean。
示例:讓我們創(chuàng)建 FirstBean
和 SecondBean
類。在此示例中, SecondBean
在bean之前初始化 FirstBean
。
公共 類 FirstBean {
@Autowired
private SecondBean secondBean ;
}
公共 類 SecondBean {
public SecondBean(){
系統(tǒng)。出。println(“通過Constuctor初始化的SecondBean”);
}
}
基于配置類在Java中聲明上述bean。
@組態(tài)
public class AppConfig {
@Bean(“ firstBean ”)
@DependsOn(value = {
“secondBean”
})
公共 FirstBean firstBean(){
返回 新的 FirstBean();
}
@Bean(“secondBean”)
public SecondBean secondBean(){
返回 new SecondBean();
}
}
閱讀有關(guān)Spring上@DependsOn注釋的更多信息 - @DependsOn注釋示例。
默認(rèn)情況下,Spring IoC容器在應(yīng)用程序啟動(dòng)時(shí)創(chuàng)建并初始化所有單例bean。我們可以通過使用@Lazy
注釋來防止單例bean的這種預(yù)初始化 。
所述 @Lazy
注釋可以在任何類中使用,與直接或間接地注釋 @Component
或與所述注解的方法 @Bean。
示例:考慮我們有兩個(gè)bean - FirstBean
和 SecondBean
。在此示例中,我們將FirstBean
使用 @Lazy
注釋顯式加載 。
公共 類 FirstBean {
public void test(){
系統(tǒng)。出。println(“FirstBean類的方法”);
}
}
公共 類 SecondBean {
public void test(){
系統(tǒng)。出。println(“SecondBean類的方法”);
}
}
基于配置類在Java中聲明上述bean。
@組態(tài)
public class AppConfig {
@Lazy(value = true)
@豆
公共 FirstBean firstBean(){
返回 新的 FirstBean();
}
@豆
public SecondBean secondBean(){
返回 new SecondBean();
}
}
我們可以看到,bean secondBean
由Spring容器初始化,而bean firstBean
則被顯式初始化。
閱讀有關(guān)@Lazy
注釋的更多信息, 并在Spring上提供完整的示例 - @Lazy Annotation示例。
注釋的方法 @Lookup
告訴Spring在我們調(diào)用它時(shí)返回方法返回類型的實(shí)例。
有關(guān)此注釋的詳細(xì)信息,請參見 Spring @LookUp Annotation。
@Primary
當(dāng)存在多個(gè)相同類型的bean時(shí),我們使用它 給bean更高的優(yōu)先級。
@零件
@主
class Car 實(shí)現(xiàn) Vehicle {}
@零件
class Bike 實(shí)現(xiàn) Vehicle {}
@零件
class Driver {
@Autowired
車輛 車輛 ;
}
@零件
class Biker {
@Autowired
@Qualifier(“自行車”)
車輛 車輛 ;
}
在Spring上閱讀有關(guān)此注釋的更多信息 - @Primary Annotation示例。
我們使用@Scope
注釋來定義類的范圍或 @Bean定義。它可以是單例,原型,請求,會(huì)話,globalSession或某些自定義范圍。 @Component
例如:
@零件
@Scope(值 = ConfigurableBeanFactory。SCOPE_SINGLETON)
公共 類 TwitterMessageService 實(shí)現(xiàn) MessageService {
}
@零件
@Scope(值 = ConfigurableBeanFactory。SCOPE_PROTOTYPE)
公共 類 TwitterMessageService 實(shí)現(xiàn) MessageService {
}
了解更多關(guān)于在@Scope注解 春@Scope注解與辛格爾頓范圍實(shí)例和 春天@Scope注解與原型作用域?qū)嵗?/blockquote>@輪廓
如果我們希望Spring 只在特定的配置文件處于活動(dòng)狀態(tài)時(shí)才使用
@Component
類或 @Bean方法,我們可以用它來標(biāo)記它@Profile
。我們可以使用注釋的value參數(shù)配置配置文件的名稱:@零件@Profile(“sportDay”)class Bike 實(shí)現(xiàn) Vehicle {}@進(jìn)口
該
@Import
注釋指示一個(gè)或多個(gè)@Configuration類進(jìn)口。例如:在基于Java的配置中,Spring提供了
@Import
注釋,允許從另一個(gè)配置類加載@Bean定義。@組態(tài)公共 類 ConfigA {@豆public A a(){返回 新的 A();}}@組態(tài)@Import(ConfigA。類)公共 類 ConfigB {@豆public B b(){return new B();}}現(xiàn)在,在實(shí)例化上下文時(shí),不需要同時(shí)指定 ConfigA類和ConfigB類,只需要顯式提供ConfigB。
閱讀有關(guān)Spring @Import Annotation上@Import注釋的更多信息 。@ImportResource
Spring提供了一個(gè)
@ImportResource
注釋,用于將bean從applicationContext.xml文件加載到ApplicationContext中。例如:考慮我們在類路徑上有applicationContext.xml Spring bean配置XML文件。@組態(tài)@ImportResource({ “classpath *:applicationContext.xml” })公共 類 XmlConfiguration {}通過Spring @ImportResource Annotation的完整示例,閱讀有關(guān)此注釋的更多信息 。@PropertySource
該
@PropertySource
注釋提供了一種方便的聲明性機(jī)制,用于添加PropertySource
Spring的Eenvironment以與@Configuration類一起使用 。例如,我們從文件config.properties文件中讀取數(shù)據(jù)庫配置,并使用Environment 將這些屬性值設(shè)置為 DataSourceConfig類。
進(jìn)口 組織。彈簧框架。豆子。工廠。InitializingBean ;進(jìn)口 組織。彈簧框架。豆子。工廠。注釋。自動(dòng)裝配 ;進(jìn)口 組織。彈簧框架。背景。注釋。配置 ;進(jìn)口 組織。彈簧框架。背景。注釋。PropertySource ;進(jìn)口 組織。彈簧框架。核心。ENV。環(huán)境 ;@組態(tài)@PropertySource(“classpath:config.properties”)公共 類 ProperySourceDemo 實(shí)現(xiàn) InitializingBean {@Autowired環(huán)境 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” ));系統(tǒng)。出。的println(配置。的toString());}}閱讀有關(guān)Spring @PropertySource Annotation with Example的此注釋的更多信息 。@PropertySources
我們可以使用此批注指定多個(gè)
@PropertySource
配置:@PropertySources({@PropertySource(“classpath:config.properties”),@PropertySource(“classpath:db.properties”)})public class AppConfig {// ...}到此,相信大家對“Spring核心注釋如何使用”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
文章名稱:Spring核心注釋如何使用-創(chuàng)新互聯(lián)
本文路徑:http://weahome.cn/article/pecss.html