[英]@ConditionalOnProperty Bean configuration not working as expected
[英]@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.