@Bean 的作用相当于在xml中配置一个Bean
@Bean通常与@Configuration一起用
@Bean(name=“myfoo”, initMethod=“”,destroyMethod=“”) 给Bean命名并设置初始化和销毁方法
下面举一个例子,我们创建4个类,接口类,实现类,中间类,测试类
接口类:
package com.imooc.beanannotation;
public interface Store {
}
实现类:
package com.imooc.beanannotation;
public class StringStore implements Store {
public void init()
{
System.out.println("this is a init");
}
public void destroy()
{
System.out.println("this is a destroy");
}
}
这里一定要注意我们在中间类中返回的方法就是实现类,所以init与destroy方法一定要写在实现类里面
中间类:
package com.imooc.beanannotation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class StoreConfig {
@Bean(name="Store",initMethod="init",destroyMethod="destroy")
public Store getStringStore()
{
return new StringStore();
}
}
这里有一点容易弄错,当我们不给Bean命名时,bean的name是方法名(getStringStore)
测试类:
package com.imooc.beanannotation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestStore {
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("spring-beanannotation.xml");
Store store =ctx.getBean("Store",Store.class);
System.out.println(store.getClass().getName());
}
}