@Configuration和@Bean注解的使用
- @Configuration標注在類上,相當於把該類作為spring的xml配置文件中<beans>,作用為:配置spring容器(應用上下文)
- @bean注解:用於告訴方法產生一個Bean對象,然后這個Bean對象交給Spring管理,Spring將會將這個Bean對象放在自己的IOC容器中
- 注意:Spring IOC容器管理一個或多個bean,這些bean都需要在@Configuration注解下進行創建
AppConfig.java
package net.cybclass.sp.config; import net.cybclass.sp.domain.VideoOrder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Scope; @Configuration public class AppConfig { //使用@Bean注解,表明這個bean交給spring進行管理,如果沒有指定名稱,默認采用方法名首字母小寫 //@Bean @Bean(value = "videoOrder",initMethod = "init",destroyMethod = "destroy") @Scope public VideoOrder videoOrder(){ return new VideoOrder(); } }
VideoOrder.java
package net.cybclass.sp.domain; public class VideoOrder { public VideoOrder(){ } public void init(){ System.out.println("VideoOrder init被調用"); } public void destroy(){ System.out.println("VideoOrder destroy被調用"); } public VideoOrder(Video video){ this.video=video; } private int id; //訂單號 private String outTradeNo; private Video video; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getOutTradeNo() { return outTradeNo; } public void setOutTradeNo(String outTradeNo) { this.outTradeNo = outTradeNo; } public Video getVideo() { return video; } public void setVideo(Video video) { this.video = video; } @Override public String toString() { return "VideoOrder{" + "id=" + id + ", outTradeNo='" + outTradeNo + '\'' + ", video=" + video + '}'; } }
演示