當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring注释详解
生活随笔
收集整理的這篇文章主要介紹了
Spring注释详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.@Autowired注釋用法
1.@Autowired 應用于構造函數(多個構造方法時必須有一個構造方法被@Autowired注釋) public class MovieRecommender {private final CustomerPreferenceDao customerPreferenceDao;@Autowiredpublic MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {this.customerPreferenceDao = customerPreferenceDao;}}2.@autowired 應用于Setter方法 public class SimpleMovieLister {private MovieFinder movieFinder;@Autowiredpublic void setMovieFinder(MovieFinder movieFinder) {this.movieFinder = movieFinder;} }3.@Autowired注釋應用于具有任意名稱和/或多個參數的方法 public class MovieRecommender {private MovieCatalog movieCatalog;private CustomerPreferenceDao customerPreferenceDao;@Autowiredpublic void prepare(MovieCatalog movieCatalog,CustomerPreferenceDao customerPreferenceDao) {this.movieCatalog = movieCatalog;this.customerPreferenceDao = customerPreferenceDao;}} 4.@Autowired注釋運用于字段,甚至與構造函數混合: public class MovieRecommender {private final CustomerPreferenceDao customerPreferenceDao;@Autowiredprivate MovieCatalog movieCatalog;@Autowiredpublic MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {this.customerPreferenceDao = customerPreferenceDao;}}5.將@Autowired注釋添加到需要該類型數組的字段或方法中,還可以從applicationContext中提供特定類型的所有bean。 public class MovieRecommender {@Autowiredprivate MovieCatalog[] movieCatalogs;}6.@Autowired注釋運用集合 public class MovieRecommender {private Set<MovieCatalog> movieCatalogs;@Autowiredpublic void setMovieCatalogs(Set<MovieCatalog> movieCatalogs) {this.movieCatalogs = movieCatalogs;}}2.@Qualifier注釋用法
1.當你創建多個具有相同類型的 bean 時,并且想要用一個屬性只為它們其中的一個進行裝配,在這種情況下你可以使用@Qualifier 注釋和 @Autowired 注釋通過指定哪一個真正的 bean 將會被裝配來消除混亂public class MovieRecommender {@Autowired@Qualifier("main")private MovieCatalog movieCatalog;}2.@Qualifier注解也可以在單獨的構造函數參數或方法參數上指定public class MovieRecommender {private MovieCatalog movieCatalog;private CustomerPreferenceDao customerPreferenceDao;@Autowiredpublic void prepare(@Qualifier("main")MovieCatalog movieCatalog,CustomerPreferenceDao customerPreferenceDao) {this.movieCatalog = movieCatalog;this.customerPreferenceDao = customerPreferenceDao;}}3.您可以創建自己的自定義限定符注釋。只需定義一個注釋并在定義中提供@Qualifier注釋 @Target({ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Qualifier public @interface Genre {String value(); }3.@Required注釋用法
1.@Required 注釋應用于 bean 屬性的 setter 方法,它表明受影響的 bean 屬性在配置時必須放在 XML 配 置文件中, 否則容器就會拋出一個 BeanInitializationException 異常.public class SimpleMovieLister {private MovieFinder movieFinder;@Requiredpublic void setMovieFinder(MovieFinder movieFinder) {this.movieFinder = movieFinder;}}4.@Resource注釋用法
1.@Resource 注釋可以在字段中或者 setter 方法中使用.@Resource 注釋使用一個 ‘name’ 屬性,該屬性以 一個 bean 名稱的形式被注入。你可以說,它遵循 by-name 自動連接語義 public class SimpleMovieLister {private MovieFinder movieFinder;@Resource(name="myMovieFinder")public void setMovieFinder(MovieFinder movieFinder) {this.movieFinder = movieFinder;} }2.@Resource 注釋可以在字段中或者 setter 方法中使用.如果不使用name屬性,將采用默認的字段名,所以下面的示例將 把名為“moviefinder”的bean注入其setter方法中 public class SimpleMovieLister {private MovieFinder movieFinder;@Resourcepublic void setMovieFinder(MovieFinder movieFinder) {this.movieFinder = movieFinder;} }5.@ComponentScan和@Configuration注釋用法
1.要自動檢測這些類并注冊相應的bean,需要將@componentscan添加到@configuration類中,其中basepackages屬性是 這兩個類的通用父包。(或者,可以指定包含每個類的父包的逗號/分號/空格分隔列表。)帶@Bean注釋的方法可以有任意數量的參數來描述構建該bean所需的依賴關系。例如,如果我們的TransferService需要 一個AccountRepository,我們可以通過一個方法參數來實現依賴關系:@Configuration @ComponentScan(basePackages = "org.example") public class AppConfig {@Beanpublic TransferService transferService(AccountRepository accountRepository) {return new TransferServiceImpl(accountRepository);} }2.@Bean注釋支持指定任意初始化和銷毀回調方法,很像Spring XML在bean元素上的init-method和destroy-method屬性 public class Foo {public void init() {// initialization logic} }public class Bar {public void cleanup() {// destruction logic} }@Configuration public class AppConfig {@Bean(initMethod = "init")public Foo foo() {return new Foo();}@Bean(destroyMethod = "cleanup")public Bar bar() {return new Bar();} }3.您可以指定使用@Bean注釋定義的bean應該具有特定的范圍。您可以使用Bean作用域部分中指定的任何標準作用域。默認范圍是單例的,但是您可以使用@Scope注釋覆蓋它 @Configuration public class MyConfiguration {@Bean@Scope("prototype")public Encryptor encryptor() {// ...} }6.@Pointcut
1.切入點表達式可以使用“&&”、“||”和“!”組合 @Pointcut("execution(public * *(..))") private void anyPublicOperation() {}@Pointcut("within(com.xyz.someapp.trading..*)") private void inTrading() {}@Pointcut("anyPublicOperation() && inTrading()") private void tradingOperation() {}?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Spring注释详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring 配置元数据
- 下一篇: gradle idea java ssm