私はこれを理解することができません..何らかの理由で、Spring Junit が私の Bean をコンテキストに追加していません。ウェルプしてください!!
原因: org.springframework.beans.factory.NoSuchBeanDefinitionException: タイプ 'com.api.demo.store.FileStorage' の適格な Bean がありません: autowire 候補として適格な Bean が少なくとも 1 つ必要です。依存関係の注釈: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=com.api.demo.store.FileStorageMemDB)} at org .springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104) at org.springframework.beans.factory.support org.springframework.beans の .DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)。
@RunWith(SpringRunner.class)
@SpringBootTest
public class FileStorageMemDBTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private FileStorage fileStorage;
@Autowired private ApplicationContext ctx;
@Test
public void testRetrieveAll() {
FileInfo fileInfo = new FileInfo("fileOne", "GoodFile.txt", "test");
entityManager.persist(fileInfo);
fileStorage.retrieveAllFiles();
}
}
@Service
public interface FileStorage {
/**
* Stores file in an underlying file store
*
* @param File to store
* @param FileInfo file submission metadata
*/
public void store(MultipartFile mFile, FileInfo info) throws IOException;
/**
* Retrieves a list of all file
*
* @return array containing file metadata
*/
public List<FileInfo> retrieveAllFiles();
/**
* Retrieve file metadata by id
*
* @return file metadata if found
* @Param id of a file to retrieve
*/
public FileInfo retrieveFileMetadata(Long id);
}
/**
* Database implementation of FileStorage interface
*
*/
@Transactional
@Service
public class FileStorageMemDB implements FileStorage {
@PersistenceContext
private EntityManager entityManager;
@Override
public void store(MultipartFile incomingFile, FileInfo info) throws IOException {
......
entityManager.persist(info);
}
@Override
public List<FileInfo> retrieveAllFiles() {
return entityManager.createNamedQuery("query_find_all_records", FileInfo.class).getResultList();
}
@Override
public FileInfo retrieveFileMetadata(Long id) {
return entityManager.find(FileInfo.class, id);
}
}