2014-07-06 4 views
0

정적 인 데이터 소스 (타사에서 확보 한)를 중심으로 스프링 부트 및 스프링 데이터 (RELEASE 1.1.3)를 사용하여 앱을 빌드하면 효과적으로 API를 제공 할 수 있습니다. 데이터는 프론트 엔드를 만들 수 있지만 (정적 데이터에 대한 액세스를 제공하기 위해) 다른 프로젝트의 종속성으로 포함될 수도 있습니다. @RepositoryRestResource 주석을 사용하여 API 부분을 달성 할 수 있었지만 후자.여러 프로젝트에서 여러 데이터 소스를 구성하는 방법

예 클래스 : 항목 법인

@Entity 
@Table(name = "invTypes") 
public class Item { 


    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "typeID", nullable = false) 
    private int id; 

    @Column(name = "typeName") 
    private String name; 

    //Remainder ommitted 
} 

ItemDao 기본적으로

@RepositoryRestResource(collectionResourceRel = "items", path = "items") 
public interface ItemDao extends PagingAndSortingRepository<Item, Integer> { 

    Item findById(@Param("id") int id); 

    Item findByName(@Param("name") String name); 

    List<Item> findByNameContains(@Param("name") String name); 
} 

나는, 다른 프로젝트에서 사용하기에 항아리로이 패키지 싶습니다 내가 할 수있는 그러한 2 개의 데이터베이스 구성 (하나는 정적 데이터 원본이고 다른 하나는 새 프로젝트와 관련됨)

정적 데이터 프로젝트를 패키지화하여 다른 pom.xml에 종속성으로 포함 시켰습니다. 그러나 새 프로젝트도 데이터베이스를 사용하므로 가져온 정적 데이터 병은 새 프로젝트에서 구성된 데이터베이스로 기본 설정됩니다. 이 같은 오류가 발생합니다

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxException: Table 'new_project.invtypes' doesn't exist 

(이되는 새로운 프로젝트는 'new_project'데이터베이스를 사용할뿐만 아니라, 최대 절전 모드 ImprovedNamingStrategy를 사용하도록 구성되고 구성되어 있기 때문에) 동료가 구성에 대한 언급

새로운 프로젝트의 application.properties에있는 두 데이터베이스 - 그러나이 방법으로는별로 행운이 없습니다. 나는 두 데이터베이스가 (여기 가이드를 사용하여 : http://xantorohara.blogspot.co.uk/2013/11/spring-boot-jdbc-with-multiple.html) 구성 할 수 있도록 봄에 의해 집계되는 정적 프로젝트에 대한 데이터 소스 속성의 접두사를 변경 시도했지만, 두 프로젝트 모두 동일한 데이터 소스를 사용하는 것 되고 결국 위의 접근

@Configuration 
@ConfigurationProperties(prefix = "spring.ds_static") 
class DataSourceConfig extends TomcatDataSourceConfiguration { 
    @Bean(name = "dsStatic") 
    public DataSource dataSource() { 
    return super.dataSource(); 
    } 

    @Bean(name = "jdbcStatic") 
    public JdbcTemplate jdbcTemplate(DataSource dsStatic) { 
    return new JdbcTemplate(dsStatic); 
    } 
} 

특성,하지만 이전과 같은 오류가 발생합니다 : 나는) 모든 잘못이있어 경우 사과는

정적 프로젝트의 구성은 다음되었다

# Configured properties for the new project 
spring.datasource.url=jdbc:mysql://localhost/new_projct 
spring.datasource.username=dbuser 
spring.datasource.password=password 
spring.datasource.driverClassName=com.mysql.jdbc.Driver 
spring.jpa.show-sql=true 
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy 

# Configured properties for the static data jar 
spring.ds_static.url=jdbc:mysql://localhost/static_data 
spring.ds_static.username=dbuser 
spring.ds_static.password=password 
spring.ds_static.driverClassName=com.mysql.jdbc.Driver 

jar 파일을 종속성을 포함하는 프로젝트의 데이터베이스 대신 자신의 데이터베이스에 연결하도록 jar 파일을 포함하고 구성하는 방법은 무엇입니까? 내가 결정한 데이터 소스에 강제로 연결하도록 정적 데이터 프로젝트에서 일부 구성을 수행해야합니까? 당신이 추가 정보를 필요로하는 경우 어떤 도움

감사합니다, 나는 그것을 제공 드리겠습니다

+0

당신이 원하는 것이 무엇인지, 당신이 무엇을했는지, 또는 당신이 시도했을 때 무엇이 ​​잘못되었는지 명확하지 않습니다. 최종 복합 앱에 2 개의 DataSource가 필요합니까, 아니면 하나만 필요합니까? –

+0

안녕하세요, 나는 좀 더 많은 정보로 그것을 업데이트하고 내가 성취하려는 것을 명확하게하려고 노력했습니다. – spjthe

+0

두 프로젝트 모두 JPA를 사용합니까? 둘 다에 대한 DataSource 구성을 표시 할 수 있습니까? –

답변

0

당신은뿐만 아니라, (예를 들어 docs here 참조) "정적"항아리에 사용자 정의 엔티티 관리자 팩토리를 필요 것 같습니다 맞춤 데이터 소스로 커스텀 엔티티 관리자 팩토리를 얻은 후에는 @EnableJpaRepositories을 선언하고 엔티티 관리자 팩터의 bean id를 명시 적으로 참조해야합니다.

관련 문제