[백업][가리사니] 스프링 부트 1.4.x 솔라 (spring Data Solr) 연동 변경사항.
java, solr, spring

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

서론

스프링 부트 1.3.x 를 사용하다 이번에 1.4.0가 출시되어 업데이트 하였습니다. 문제는 1.4.0 버전 기준으로 솔라의 기본 버전이 2.0.2.RELEASE 로 업데이트 되었고 이로인해 일부가 디프리케이트되었습니다.

기존 솔라 연동 : spring-data-solr 1.3.7 까지

필자는 database.properties 에 별도로 설정했으며 아래와 같이 설정하였습니다. solr.gs.host: http://호스트:포트/solr

/**
 * 솔라
 */
@Configuration
@EnableSolrRepositories
(
	basePackages = "db.solr.gs.repositories",
	solrServerRef = "GsSolr",
	solrTemplateRef = "GsSolrTemplate",
	multicoreSupport = true
)
@PropertySource("classpath:database.properties")
public static class GsSolrConfig
{
	@Value("${solr.gs.host}")
	String host;

	@Bean(name = "GsSolr")
	public SolrServer getSolrServer()
	{
		return new HttpSolrServer(host);
	}

	@Bean(name = "GsSolrTemplate")
	public SolrTemplate getSolrTemplate()
	{
		return new SolrTemplate(getSolrServer());
	}
}

디프리케이트 부분 solrServerRef 가 사라졌습니다. SolrServer, HttpSolrServer 가 디프리케이트 되었습니다. 문서를 보니 HttpSolrClient 를 사용하라고 나옵니다. https://lucene.apache.org/solr/5_0_0/solr-solrj/org/apache/solr/client/solrj/impl/HttpSolrServer.html

수정

spring-data-solr 2.x 부터는 아래와 같이 작성하셔야 합니다.

/**
 * 솔라
 */
@Configuration
@EnableSolrRepositories
(
	basePackages = "db.solr.gs.repositories",
	//solrServerRef = "GsSolr", 디프리케이트
	solrClientRef = "GsSolr",
	solrTemplateRef = "GsSolrTemplate",
	multicoreSupport = true
)
@PropertySource("classpath:database.properties")
public static class GsSolrConfig
{
	@Value("${solr.gs.host}")
	String host;

//		디프리케이트 되었다.
//		HttpSolrClient 를 대신 쓰라고 한다.
//		@Bean(name = "GsSolr")
//		public SolrServer getSolrServer()
//		{
//			return new HttpSolrServer(host);
//		}

	@Bean(name = "GsSolr")
	public SolrClient getSolrClient()
	{
		return new HttpSolrClient(host);
	}

	@Bean(name = "GsSolrTemplate")
	public SolrTemplate getSolrTemplate()
	{
		return new SolrTemplate(getSolrClient());
	}
}

결과

입출력 무리없이 똑같이 돌아갑니다. 공식문서가 왜 디프리케이트 했는지에 대한 이유를 언급하지 않는 것이 조금 아쉽습니다. Deprecated. Use HttpSolrClient

  • 쿨한 문서...

스프링 솔라 연동 강의는 아래를 참고해주세요.

스프링 solr 연동 /2016/06/28/%EB%B0%B1%EC%97%85-%EA%B0%80%EB%A6%AC%EC%82%AC%EB%8B%88-%EC%8A%A4%ED%94%84%EB%A7%81-solr-%EC%97%B0%EB%8F%99.html Spring 서로 다른 종류의 DB에 @Transactional [예제포함] /2016/07/19/%EB%B0%B1%EC%97%85-%EA%B0%80%EB%A6%AC%EC%82%AC%EB%8B%88-Spring-%EC%84%9C%EB%A1%9C-%EB%8B%A4%EB%A5%B8-%EC%A2%85%EB%A5%98%EC%9D%98-DB%EC%97%90-@Transactional-%EC%98%88%EC%A0%9C%ED%8F%AC%ED%95%A8.html