[JAVA]什麼是SpringBean

Spring Bean是在Spring框架下透過IOC容器來自動注入物件。
在Spring框架中可以透過3種方式建立Spring Bean

1. 透過Spring提供的ClassPathXmlApplicationContext類別,根據定義生成bean物件,前提是要在Spring的配置文件中使用<bean></bean>標籤定義bean
例如:<bean id="article" class="petforum.model.Article" />
//使用Spring的ClassPathXmlApplicationContext產生IOC容器
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("spring.xml");
Article article = appContext.getBean("article", Article.class);

此方式IOC容器會透過Contructor生成Bean


2. 透過建立Config類別並宣告一個方法,在方法上使用@Bean註釋,再透過Spring提供的AnnotationConfigApplicationContext類別進行以下操作。
 
//假設我建立一個Config類別

//在此類別建立一個方法,並使用註釋
@Bean
public Article article(){
return new Article();
}


//然後在使用Spring的AnnotationConfigApplicationContext類別產生IOC容器
AnnotationConfigApplicationContext appContext = new AnnotationConfigApplicationContext();
//再註冊
appContext.register(Config.class);
Article article = appContext.getBean("article", Article.class);

第2種方式不需使用到spring的配置文件,Spring Bean物件是透過article()方法 new出來的。


3. 在Config類別使用@ComponentScan("petforum.model"),代表在"petforum.model" package下,凡是使用到@Component註釋的類別
在IOC容器建立後會掃描"petforum.model"package​,再透過類別的Contructor生成Spring Bean
//在Article類別加上@Component註釋

@Component
public class Article{
private Integer posterUid;
........

public Article(){
}
........

}


//然後在使用Spring的AnnotationConfigApplicationContext類別產生IOC容器
AnnotationConfigApplicationContext appContext = new AnnotationConfigApplicationContext();
Article article = appContext.getBean("article", Article.class);

 

如有敘述錯誤,還請不吝嗇留言指教,thanks!