samwellwang

samwellwang

coder
twitter

Spring 中註解相關

其實在我的日常生活中是基本沒用過註解的。但是聽別的同學講他們公司用到的蠻多的,想學習一下。發現註解真的好牛掰哦。。可以完全拋棄 xml 的配置。。。希望我們公司也可以用註解來開發。。

2020-05-09

其實在我的日常生活中是基本沒用過註解的。但是聽別的同學講他們公司用到的蠻多的,想學習一下。發現註解真的好牛掰哦。。可以完全拋棄 xml 的配置。。。希望我們公司也可以用註解來開發。。

註解:
@Component:代表正是個組件
@Autowired:指定類型的 bean 注入到這個字段中
@Configuration:表示它是一個配置類
@ComponentScan:搜索整個包,把所有標記為 Component 的 Bean 自動創建出來,並根據 Autowired 裝配

只需要:
每個 Bean 被標註為 @Component 並正確使用 @Autowired 注入;
配置類被標註為 @Configuration@ComponentScan
所有 Bean 均在指定包以及子包內。

@Scope (ConfigurableBeanFactory.SCOPE_PROTOTYPE) :創建一個原型 Bean
@Order :指定 List 中 Bean 的順序 分別給 Bean 標記 Order (1),Order (2)….
@Autowired (required = false): 找不到對應的 bean 就略過
@Bean (“Second”) :創建同類型的 Bean Bean 的別名
@Primary:或者指定優先級

@Autowired(required = false)
@Qualifier (“z”) // 指定注入名稱為”z” 的 ZoneId

@Value (“classpath:/logo.txt”) 注入 Resourse

@PropertySource (“app.properties”) 注入配置文件
@Value(“${app.zone}”) 注入配置文件的值
String zoneId;

“${app.zone}” 表示讀取 key 為 app.zone 的 value,如果 key 不存在,啟動將報錯;
“${app.zone}” 表示讀取 key 為 app.zone 的 value,但如果 key 不存在,就使用默認值 Z。

注入 JavaBean 持有所有的配置
@Component
public class SmtpConfig {
@Value(“${smtp.host}”)
private String host;

@Value("${smtp.port:25}")
private int port;

public String getHost() {
    return host;
}

public int getPort() {
    return port;
}

}
讀取配置 JavaBean 中的配置信息
@Component
public class MailService {
@Value(“#{smtpConfig.host}”)
private String smtpHost;

@Value("#{smtpConfig.port}")
private int smtpPort;

}

@Profile:表示不同的環境 native test production

@Conditional (OnSmtpEnvCondition.class):條件注入
@ConditionalOnProperty (name=”app.smtp”, havingValue=”true”) 如果配置文件中存在 app.smtp=true,則創建
@ConditionalOnClass (name = “javax.mail.Transport”) 如果目前 classpath 中存在類 javax.mail.Transport,則創建

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。