簡體   English   中英

@Configuration不適用於Bean創建

[英]@Configuration not working for Bean creation

我有以下代碼,在這里我試圖從方法的返回類型中創建一個bean。

如下所示啟動應用程序時出現錯誤:

創建在類路徑資源[com / test / MyServiceImpl.class]中定義的名稱為“ myMap”的bean時出錯:找不到匹配的工廠方法:factory bean'MyServiceImpl'; 工廠方法“ 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>

我不是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();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM