设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 创业者
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

Java工程师必须搞明白:BeanFactory与FactoryBean是个啥?(2)

发布时间:2019-09-11 12:08 所属栏目:21 来源:咔咔侃技术
导读:你可以使用xml的注入方式,当然也可以使用javaConfig的配置方式。这里我们使用javaConfig注入。我们将两个FactroyBean注入到Spring容器中去。 @Configuration publicclassConfig{ @Bean publicTaskFactoryBeancusto

你可以使用xml的注入方式,当然也可以使用javaConfig的配置方式。这里我们使用javaConfig注入。我们将两个FactroyBean注入到Spring容器中去。

  1. @Configuration 
  2. public class Config { 
  3.  @Bean 
  4.  public TaskFactoryBean customTask() { 
  5.  TaskFactoryBean taskFactoryBean = new TaskFactoryBean(); 
  6.  taskFactoryBean.setCronExpression("0 15 10 * * ?"); 
  7.  String word = "定时任务一"; 
  8.  SomeService someService = new SomeService(); 
  9.  someService.setWord(word); 
  10.  taskFactoryBean.setSomeService(someService); 
  11.  return taskFactoryBean; 
  12.  } 
  13.  @Bean 
  14.  public TaskFactoryBean otherTask() { 
  15.  TaskFactoryBean taskFactoryBean = new TaskFactoryBean(); 
  16.  taskFactoryBean.setCronExpression("0 15 17 * * ?"); 
  17.  String word = "定时任务二"; 
  18.  SomeService someService = new SomeService(); 
  19.  someService.setWord(word); 
  20.  taskFactoryBean.setSomeService(someService); 
  21.  return taskFactoryBean; 
  22.  } 

3.4 FactoryBean的一些特点

一般如上声明后,@Bean注解如果不显式声明bean名称则方法名作为bean的名称,而且返回值作为注入的Bean。但是我们通过debug发现却是这样的:

Java工程师必须搞明白:BeanFactory与FactoryBean是个啥?

也就是说通过方法名是返回FactoryBean 创建的Bean。那么如何返回该FactoryBean呢?上图中也给出了答案在方法前增加引用符“&”。具体的原因还用从BeanFactory中寻找,真是不是冤家不聚头

Java工程师必须搞明白:BeanFactory与FactoryBean是个啥?

我们对上面声明的两个bean进行测试,也出色地完成了不同的定时任务业务逻辑。

  1. @Autowired 
  2.  private Task customTask; 
  3.  @Autowired 
  4.  private Task otherTask; 
  5.  @Test 
  6.  public void task() { 
  7.  customTask.execute(); 
  8.  otherTask.execute(); 
  9.  } 

4. 总结

在后续的使用中你可以通过声明不同的cron表达式,以及不同SomeService来定制更多的定时任务。通过这个例子相信你会对FactoryBean有的清晰的认识。demo就不提供了,非常简单,强烈建议你自己试一试以加深理解。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读