2017-02-25 15 views
0

스프링 jdbc를 사용할 때 먼저 jdbcTemplate 객체를 생성 할 때 데이터 소스 빈을 정의하고 삽입합니다. 이 데이터 소스를 프로토 타입 범위로 정의해야 할 필요가 있는지 알고 싶습니다. 전체 어플리케이션을위한 dataSource 오브젝트가 1 개만있는 경우를 제외합니다. 나는 이것이 애플리케이션 성능을 감소 시키는데 영향을 미친다고 생각한다.스프링 jdbc에서 데이터 소스가 프로토 타입 범위에 있어야합니까?

다음은 스프링 구성 파일 내에 dataSouce를 정의한 방법입니다.

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource" > 
<property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
<property name="url" value="jdbc:mysql://localhost:3306/testdb" /> 
<property name="username" value="root" /> 
<property name="password" value="123" /> 
</bean> 

내 DAO 클래스에서는 아래와 같이 dataSOurce를 autowired했습니다.

@Repository 
public class RecordDAOImpl { 

JdbcTemplate jdbcTemplate = null; 

@Autowired 
public void setDataSource(DataSource dataSource) { 
    this.jdbcTemplate = new JdbcTemplate(dataSource); 
} 

} 

spring mvc 웹 응용 프로그램의 dataSource를 정의하는 가장 좋은 방법은 무엇인지 알려주십시오. 내가 알고 싶은 무엇

답변

1

우리가 어떤 우리가 필요로하지 않는 프로토 타입 범위

이 데이터 소스를 정의 할 필요가 없다 할 것입니다. 좋은 생각이 아닐 것입니다. 연결 풀 데이터 소스와 싱글 톤 범위 빈을 사용할 수 있습니다.

우리는 또한 여러 개의 데이터베이스를 가질 수 있으며 각각의 데이터 소스에 싱글 톤 스코프를 제공 할 수 있습니다. 아무런 문제가 없습니다.

스프링 mvc 웹 응용 프로그램 용 dataSource를 정의하는 가장 좋은 방법은 무엇인지 알려주십시오.

xml 파일에 데이터 소스를 정의하는 데는 아무런 문제가 없습니다 (많은 개발자가 xml을 피할 수 있음). 필자는 자바 설정을 사용하여이를 수행하는 것을 좋아한다.

드라이버 및 데이터베이스에 따라이 더 많거나 적은처럼 보일 것이다

@Configuration 
class DatasourceConfig { 

    @Bean 
    DataSource datasource() { 
     PGPoolingDataSource dataSource = new PGPoolingDataSource(); 
     dataSource.setPassword("pass"); 
     dataSource.setPortNumber(123); 
     dataSource.setUser("user"); 
     dataSource.setMaxConnections(10); 
     return dataSource; 
    } 
}