spring bean的使用总结

本文详细介绍了如何使用Spring框架中的@Configuration和@Bean注解进行Bean的配置,包括Bean的实例化、自动装配、初始化和销毁方法的定义等内容,并对比了XML配置方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值