@Configuration不适用于Bean创建

时间:2015-06-26 12:59:49

标签: java spring spring-mvc

我有以下代码,其中我试图从方法的返回类型创建一个bean。

启动应用程序时出错如下:

  

使用名称' myMap'创建bean时出错在类路径资源中定义   [com / test / MyServiceImpl.class]:找不到匹配的工厂方法:   factory bean' MyServiceImpl&#39 ;;工厂方法' myMap()'。检查一下   存在具有指定名称的方法,并且它是非静态的。

代码:

@Configuration
public class MyServiceImpl implements MyService
{

  @Autowired
  private MyDao myDao;

  @Override
  @Bean
  @Scope("singleton")
  @Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
  public Map<String, String> myMap() 
  {
    return myDao.getMapFromDB();
  }

}


public interface MyService
{

  Map<String, String> myMap() 
}

我的应用程序基于spring mvc,我在xml中添加了相关配置。

<mvc:annotation-driven/>
<context:component-scan>

1 个答案:

答案 0 :(得分:0)

我不是100%肯定你会尝试做什么,但这是一种可行的方法:

@Service
public class MyServiceImpl implements MyService {

  @Autowired
  private MyDao myDao;

  @Override
  @Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
  public Map<String, String> myMap() {
    return myDao.getMapFromDB();
  }
}

interface MyService {
  Map<String, String> myMap() 
}

这会将您的服务实现定义为Spring管理的@Service。您的MyDao会自动注入,您可以在方法中使用它。

如果您希望MyDao具有特定范围(单例已经是默认值),则需要注释MyDao类。

如果你想编写配置,你需要这样做:

@Configuration
class MyConfig { 
    public MyService myService() {
          return new MyServiceImpl();
    }
}