Spring 注解

1.配置組件
@Configuration和@Bean

@Configuration和@Bean注解配套使用锁孟,首先這個類是一個IOC容器,方法加了一個這個@Bean注解帖蔓,一般這樣的方法返回的都是一個對象丘侠,我們就可以直接從這個類中拿到這個實例,并且是單例的炼杖,我們可以通過AnnotationApplicationContext context = new AnnotationApplicationContext(加了@Configuration注解的類)去獲取到這個bean對象
標注在類上灭返,該類會被CGLIB動態(tài)代理生成子類,可以達到這樣的效果:在某@Bean方法下調(diào)用另一個標注了@Bean的方法坤邪,得到的會是同一個Bean對象熙含;

@ConponentScan

該注解默認會掃描該類所在的報下所有的配置類

@Scope

@Scope("prototype")//多實例,IOC容器啟動創(chuàng)建的時候艇纺,并不會創(chuàng)建對象放在容器在容器當中怎静,當你需要的時候,需要從容器當中取該對象的時候黔衡,就會創(chuàng)建蚓聘。
@Scope("singleton")//單實例 IOC容器啟動的時候就會調(diào)用方法創(chuàng)建對象,以后每次獲取都是從容器當中拿同一個對象(map當中)盟劫。
@Scope("request")//同一個請求創(chuàng)建一個實例
@Scope("session")//同一個session創(chuàng)建一個實例

@Lazy

延遲初始化

@Conditional(WinCondition.class)

條件主鍵夜牡,里面的類實現(xiàn)Condition,然后實現(xiàn)matches方法侣签,返回的boolean值氯材,如果為true,則執(zhí)行該方法

@Import

導入外部資源

帶有@Configuration的配置類
public class TestA {

    public void fun(String str) {
        System.out.println(str);
    }

    public void printName() {
        System.out.println("類名 :" +Thread.currentThread().getStackTrace()[1].getClassName());
    }
}

@Import({TestA.class})
@Configuration
public class ImportConfig {
}

ImportConfig,在類上面加上@Configuration,加上@Configuration是為了能讓Spring 掃描到這個類硝岗,并且直接通過@Import引入TestA類

ImportSelector 的實現(xiàn)
public class TestC {
    public void fun(String str) {
        System.out.println(str);
    }

    public void printName() {
        System.out.println("類名 :" + Thread.currentThread().getStackTrace()[1].getClassName());
    }
}

public class SelfImportSelector implements ImportSelector {
    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        return new String[]{"com.test.importdemo.TestC"};
    }
}

SelfImportSelector.class 實現(xiàn)ImportSelector 接口,注入TestC.class

@Import({TestA.class,TestB.class,SelfImportSelector.class})
@Configuration
public class ImportConfig {
}

ImportConfig上面引入SelfImportSelector.class

ImportBeanDefinitionRegistrar 的實現(xiàn)
public class TestD {
    public void fun(String str) {
        System.out.println(str);
    }

    public void printName() {
        System.out.println("類名 :" + Thread.currentThread().getStackTrace()[1].getClassName());
    }
}

public class SelfImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        RootBeanDefinition root = new RootBeanDefinition(TestD.class);
        registry.registerBeanDefinition("testD", root);
    }

SelfImportBeanDefinitionRegistrar.class,實現(xiàn)接口ImportBeanDefinitionRegistrar,注入TestD.class

@Import({TestA.class,TestB.class,SelfImportSelector.class,
       SelfImportBeanDefinitionRegistrar.class})
@Configuration
public class ImportConfig {
}

ImportConfig類上加上導入SelfImportBeanDefinitionRegistrar.class

2.生命周期控制
@PostConstruct用于指定初始化方法

@PostConstruct該注解被用來修飾一個非靜態(tài)的void()方法。被@PostConstruct修飾的方法會在服務(wù)器加載Servlet的時候運行袋毙,并且只會被服務(wù)器執(zhí)行一次型檀。PostConstruct在構(gòu)造函數(shù)之后執(zhí)行,init()方法之前執(zhí)行听盖。
通常我們會是在Spring框架中使用到@PostConstruct注解 該注解的方法在整個Bean初始化中的執(zhí)行順序:

Constructor(構(gòu)造方法) -> @Autowired(依賴注入) -> @PostConstruct(注釋的方法)

@PreDestory

用于指定銷毀方法

@DependsOn

定義bean初始化及銷毀時的順序胀溺,可能有些場景中,bean A 間接依賴 bean B皆看。如Bean B應(yīng)該需要更新一些全局緩存仓坞,bean A需要使用該緩存;因此腰吟,如果bean B沒有準備好无埃,bean A無法訪問。

@Configuration
@ComponentScan("com.logicbig.example")
public class AppConfig {

    @Bean(initMethod = "initialize")
    @DependsOn("eventListener")
    public EventPublisherBean eventPublisherBean () {
        return new EventPublisherBean();
    }

    @Bean(name = "eventListener", initMethod = "initialize")
    // @Lazy
    public EventListenerBean eventListenerBean () {
        return new EventListenerBean();
    }

    public static void main (String... strings) {
        new AnnotationConfigApplicationContext(AppConfig.class);
    }
}

EventListenerBean initializing
EventPublisherBean initializing
event received in EventListenerBean : event published from EventPublisherBean
@ApplicationContextAware

可以通過這個上下文環(huán)境對象得到Spring容器中的Bean

@BeanDefinitionRegistryPostProcessor

BeanDefinitionRegistryPostProcessor實現(xiàn)了BeanFactoryPostProcessor接口毛雇,是spring框架的BeanDefinitionRegistry的后處理器嫉称,用來注冊額外的BeanDefinition

3.切面組件
@Transactional

配置聲明式事務(wù)信息

@EnableTransactionManagement

添加對事務(wù)管理的支持

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市灵疮,隨后出現(xiàn)的幾起案子织阅,更是在濱河造成了極大的恐慌,老刑警劉巖震捣,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荔棉,死亡現(xiàn)場離奇詭異闹炉,居然都是意外死亡,警方通過查閱死者的電腦和手機润樱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門渣触,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人祥国,你說我怎么就攤上這事昵观。” “怎么了舌稀?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵啊犬,是天一觀的道長。 經(jīng)常有香客問我壁查,道長觉至,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任睡腿,我火速辦了婚禮语御,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘席怪。我一直安慰自己应闯,他們只是感情好,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布挂捻。 她就那樣靜靜地躺著碉纺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪刻撒。 梳的紋絲不亂的頭發(fā)上骨田,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音声怔,去河邊找鬼态贤。 笑死,一個胖子當著我的面吹牛醋火,可吹牛的內(nèi)容都是我干的悠汽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼芥驳,長吁一口氣:“原來是場噩夢啊……” “哼介粘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晚树,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤姻采,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慨亲,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡婚瓜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了刑棵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巴刻。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蛉签,靈堂內(nèi)的尸體忽然破棺而出胡陪,到底是詐尸還是另有隱情,我是刑警寧澤碍舍,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布柠座,位于F島的核電站,受9級特大地震影響片橡,放射性物質(zhì)發(fā)生泄漏妈经。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一捧书、第九天 我趴在偏房一處隱蔽的房頂上張望吹泡。 院中可真熱鬧,春花似錦经瓷、人聲如沸爆哑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泪漂。三九已至,卻和暖如春歪泳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背露筒。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工呐伞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人慎式。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓伶氢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瘪吏。 傳聞我的和親對象是個殘疾皇子癣防,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容