-
如果我们想一个Bean完完全全由我们来创造,也是可以的,比如通过FactoryBean;自定义FactoryBean
@Data public class OrderService { private String name; }
@Component public class MyFactoryBean implements FactoryBean { @Override public Object getObject() throws Exception { OrderService orderService = new OrderService(); orderService.setName("order"); return orderService; } @Override public Class<?> getObjectType() { return OrderService.class; } }
-
使用
public class Test { public static void main(String[] args) throws IOException { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringAnnotationTest.class); OrderService myFactoryBean = (OrderService) context.getBean("myFactoryBean"); System.out.println(myFactoryBean.getName());//输出order } }
说明:通过上面这段代码,我们自己创造了一个OrderService 对象,并且它将成为Bean。但是通过这种方式创造出来的OrderService的Bean,只会经过初始化后,其他Spring的生命周期步骤是不会经过的,比如依赖注入。
通过@Bean也可以自己生成一个对象作为Bean,那么和FactoryBean的区别是什么呢?其实在很多场景下他俩是可以替换的,但是站在原理层面来说的,区别很明显,@Bean定义的Bean是会经过完整的Bean生命周期的。
spring通过FactoryBean创建bean
最新推荐文章于 2024-07-18 05:47:25 发布