実際には、私の日常生活では注釈をほとんど使ったことがありません。しかし、他のクラスメートが彼らの会社で多く使っていると聞いて、学びたいと思いました。注釈が本当にすごいことに気づきました。。完全に XML の設定を捨てることができます。。。私たちの会社でも注釈を使って開発できることを願っています。。
実際には、私の日常生活では注釈をほとんど使ったことがありません。しかし、他のクラスメートが彼らの会社で多く使っていると聞いて、学びたいと思いました。注釈が本当にすごいことに気づきました。。完全に 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 のエイリアスを作成します
@Primary:または優先度を指定します
@Autowired(required = false)
@Qualifier (“z”) // 注入名を「z」とする ZoneId を指定します
@Value (“classpath:/logo.txt”) Resource を注入します
@PropertySource (“app.properties”) 設定ファイルを注入します
@Value(“${app.zone}”) 設定ファイルの値を注入します
String zoneId;
“${app.zone}” は、キーが app.zone の値を読み取ることを示します。キーが存在しない場合、起動時にエラーが発生します;
“${app.zone}” は、キーが app.zone の値を読み取りますが、キーが存在しない場合はデフォルト値 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”) 現在のクラスパスに javax.mail.Transport クラスが存在する場合、作成します