Ich verwende einen REST-Webdienst, der Daten von Apache Solr abfragt. Ich verwende Spring Boot + Daten mit Solr-Repositories. Ich weiß nicht, wie man als Service-, Repository- und Controller-Layer verschaltet.Greifen Sie über den Controller auf die Serviceebene zu
I have the following structure
-Controller:
@RestController
public class ImageSearchController {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Resource ImageService imageService;
....
}
Main nach SpringBootApplication:
@SpringBootApplication
public class Application extends SpringBootServletInitializer{
public static void main(String[ ] args) {
SpringApplication.run(Application.class , args);
}
}
Dienst:
public interface ImageService {
List<Image> searchTerm(String searchTerm);
List<Image> search(String imgSrc , String imgTitle);
List<Image> searchByImgSrc(String searchTerm);
List<Image> findAll();
}
Dienst Impl:
@Service
public class ImageServiceImpl implements ImageService {
@Resource
private ImageRepository repository;
@Override
public List<Image> search(String imgSrc , String imgTitle) {
return repository.findByImgSrcContainsOrImgTitleContains(imgSrc , imgTitle);
}
....
}
Repository (Spring Data):
public interface ImageRepository extends SolrCrudRepository< Image , String > {
public List<Image> findAll();
...
}
pom.xml:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.solr/solr-solrj -->
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>5.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-solr -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
</dependencies>
...
<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
<repository>
<id>spring-milestone</id>
<name>Spring Milestone Maven Repository</name>
<url>http://repo.springsource.org/libs-milestone</url>
</repository>
</repositories>
Wie erstellt man die Bean und greift auf den Controller in der Serviceebene zu? Wie konfiguriert man den Solr Client mit dem Rest Web Service?
UPDATE
Ich verbesserte die Feder Boot-Version von 1.4.3 bis 1.5.1 und es funktionierte. Ehrlich, ich verstehe nicht warum. Jetzt bekomme ich einen weiteren Fehler, wenn man auf solr zugreift, duplizieren die Quelldaten den Namen des Kerns in solr. Irgendeine Idee ?
Dank
bearbeiten: Pom-Datei hinzufügen – alves