Spring 프로젝트에서 다음과 같은 구성을 갖고 있으며 응용 프로그램의 다른 부분이 ServiceA의 다른 인스턴스를 가져 오는 경우 ServiceA의 모든 인스턴스가 다음과 같은 단일 인스턴스를 공유하므로 병행 성 문제가 계속 발생합니까? dataSource? BasicDataSource가 threadsafe인지 여부를 간단하게 알아야합니까? 만약 그렇다면, 나는 괜찮습니까? 그렇지 않다면 문제를 일으킬 것입니까?Dropwizard App의 스프링 범위
<bean id="serviceA" name="serviceA" class="com.company.ServiceA" scope="prototype">
<constructor-arg name="dataSource" ref="dataSource"/>
</bean>
<bean id="dataSource" destroy-method="close" name="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="${dbConnectionUrl}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
<property name="initialSize" value="${connectionSize}" />
<property name="maxActive" value="${maxConnectionSize}" />
<property name="validationQuery" value="SELECT 1" />
<property name="testOnBorrow" value="true" />
</bean>
"모든 콩은 무국적이어야합니다". 이게 어떻게 나를 보호 해 주나요? 기본 범위는 싱글 톤입니다. 따라서 Spring이 두 개의 요청을 처리 할 때 잠재적으로 두 개의 요청이 같은 bean을 통해 실행되지는 않을까요? 요청 처리 도중 컨텍스트 전환이 가능하지 않습니까? – MedicineMan
"일반적으로 빈은 데이터 소스를 사용하지 않습니다 (이유가있을지라도). 일반적으로 세션 팩토리로 작업하고 세션 팩토리에서 데이터 소스에 대한 참조를 가진 현재 세션을 가져옵니다." 네가 여기서 말한 것을 이해하지 못한다. 조금 더 자세히 설명해 주시겠습니까? – MedicineMan
사실, 여기서는 REST 서비스를하고 있으므로 말할 세션이 없습니다. – MedicineMan