1.注解使用方法
用@Configuration注解该类,等价 与XML中配置beans;用@Bean标注方法等价于XML中配置bean;
public class Address {
private String location = "location";// 街道
private Integer doorId = 1;// 门牌号
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public Integer getDoorId() {
return doorId;
}
public void setDoorId(Integer doorId) {
this.doorId = doorId;
}
@Override
public String toString() {
return "Address{" + "location='" + location + '\'' + ", doorId='" + doorId + '\'' + '}';
}
}
public class Employer {
private String name = "employer";
private Address address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public void init() {
System.out.println("init Employer");
}
public void destory() {
System.out.println("destory Employer");
}
@Override
public String toString() {
return "Employer{" + "name='" + name + '\'' + ", address=" + address + '}';
}
}
@Configuration
public class BeanFactory {
@Bean(name = "employer", initMethod = "init", destroyMethod = "destory", autowire = Autowire.BY_NAME)//会根据‘address’这个名自动装配address属性
public static Employer getEmployer() {
return new Employer();
}
@Bean(name = "address")
public static Address getAddress() {
return new Address();
}
}
public static void main(String[] args) {
AbstractApplicationContext context = new ClassPathXmlApplicationContext("classpath*:applicationContext.xml");
Employer employer = (Employer) context.getBean("employer");
System.out.println(employer.getAddress().toString());
context.registerShutdownHook();
}
@Bean有如下方法:
name、value,定义bean的实例名称;
autowire,定义自动装配方式,no-不进行自动装配,BY_NAME,BY_TYPE;
initMethod,destroyMethod,定义生成、销毁bean的调用方法hook;
@Configuration,等同于beans
2.配置使用方法
<bean>进行bean的定义,实现构造方法、生成+销毁hook方法的定义,以及值加载;
<beans>下面可以有多个<bean>节点;
factory-method可以实现静态、动态工厂方法;
或可以通过继承FactoryBean接口在代码中实现工厂方法;
参考资料:
http://www.cnblogs.com/liunanjava/p/4399387.html
http://blog.youkuaiyun.com/chenssy/article/details/8222744