@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 +
'}';
}
}
演示
