- 這個(gè)專題主要講解spring的注解驅(qū)動(dòng)開發(fā)模式,相對(duì)xml配置開發(fā)更加簡(jiǎn)潔和流行褪子,同時(shí)也是springboot開發(fā)的基礎(chǔ)。
1嫌褪、先看一個(gè)案例
- 配置類
@Configuration//標(biāo)記這個(gè)類為注解類==配置文件
public class UserConfig {
/*
* @Bean代表給容器中注入一個(gè)Bean,類型為返回值得類型裙秋,id默認(rèn)是方法名
* id也可以自己定義比如@Bean("user1")
*/
@Bean
public User user() {
User user=new User();
user.setUserName("qiuzhangwei");
user.setPassword("123456");
user.setAge(55);
user.setBrithday(new Date());
return user;
}
}
- 測(cè)試類
public class Test {
public static void main(String[] args) {
// 基于注解開發(fā)的測(cè)試
ConfigurableApplicationContext context2 = new AnnotationConfigApplicationContext
(UserConfig.class);
User user2 = (User) context2.getBean("user");
System.out.println(user2);
}
}
2、相關(guān)注解和類說明
- @Configuration
作用于類上摘刑,標(biāo)記這個(gè)類為配置類(相當(dāng)于一個(gè)xml配置文件)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
String value() default "";
}
- @Bean
作用于方法或者注解類上,表示在config配置類中注入相應(yīng)的bean類党晋。@Bean給容器注入bean時(shí)候,類型為方法的返回類型未玻,默認(rèn)id是方法名蛹锰,但是可以通過別名來改變默認(rèn)id,比如上面例子可以改為@Bean("user1")铜犬。
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Bean {
//別名
@AliasFor("name")
String[] value() default {};
//名稱
@AliasFor("value")
String[] name() default {};
//確定自動(dòng)注入是按名稱還是類型,默認(rèn)是不按這兩個(gè)
Autowire autowire() default Autowire.NO;
//初始化方法
String initMethod() default "";
//銷毀方法
String destroyMethod() default AbstractBeanDefinition.INFER_METHOD;
}
- AnnotationConfigApplicationContext是注解相關(guān)的bean容器敛劝,相當(dāng)于xml配置文件對(duì)應(yīng)的ClassPathXmlApplicationContext容器
參考資料:
https://blog.csdn.net/chjttony/article/category/1239946