datasource 추추가질문
- 작성자 :
- 박*곡
- 작성일 :
- 2012-04-25 10:02:50
- 조회수 :
- 2,065
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
강사님 말씀대로
첫째) 해당 함수에서 static을 제외시키시고..
public class ConnectionManager {
@Resource(name = "dataSource")
DataSource dataSource;
@Resource(name = "jdbcProperties")
Properties jdbcProperties;
public Connection getConnection() throws Exception {
Connection con = null;
try {
con = dataSource.getConnection();
} catch (Exception e) {
e.printStackTrace();
throw e;
}
return con;
}
}
둘째) <bean id="connectionManager" clas="...ConnectionManager" /> 선언하였습니다.
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${dburl}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<property name="defaultAutoCommit" value="false" />
<property name="poolPreparedStatements" value="true" />
</bean>
<!-- PropertyPlaceholderConfigurer 설정 -->
<context:property-placeholder location="classpath:/META-INF/spring/jdbc.properties" />
<bean name="executeSqlManager" class="control.ExecuteSqlManager" />
그럼 마지막으로 다른 함수에서
@Resource
ConnectionManager connectionManager;
con = ConnectionManager.getConnection()를 사용해도
마찬 가지로 Null point exception이 발생합니다
DI 개념이 부족해서 그런거 같은데 어떻게해야 할까요?
이왕이면 con = ConnectionManager.getConnection()을 호출하는 샘플소스 부탁합니다.
첫째) 해당 함수에서 static을 제외시키시고..
public class ConnectionManager {
@Resource(name = "dataSource")
DataSource dataSource;
@Resource(name = "jdbcProperties")
Properties jdbcProperties;
public Connection getConnection() throws Exception {
Connection con = null;
try {
con = dataSource.getConnection();
} catch (Exception e) {
e.printStackTrace();
throw e;
}
return con;
}
}
둘째) <bean id="connectionManager" clas="...ConnectionManager" /> 선언하였습니다.
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${dburl}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<property name="defaultAutoCommit" value="false" />
<property name="poolPreparedStatements" value="true" />
</bean>
<!-- PropertyPlaceholderConfigurer 설정 -->
<context:property-placeholder location="classpath:/META-INF/spring/jdbc.properties" />
<bean name="executeSqlManager" class="control.ExecuteSqlManager" />
그럼 마지막으로 다른 함수에서
@Resource
ConnectionManager connectionManager;
con = ConnectionManager.getConnection()를 사용해도
마찬 가지로 Null point exception이 발생합니다
DI 개념이 부족해서 그런거 같은데 어떻게해야 할까요?
이왕이면 con = ConnectionManager.getConnection()을 호출하는 샘플소스 부탁합니다.
A
안녕하세요.. 박종곡님..
ConnectionManager를 @Resource로 사용하셨네요..
@Resource
ConnectionManager connectionManager;
이 경우는 아래와 같이 하시면 null pointer exception이 발생하지 않아야 합니다.. (ConnectionManager가 아닌 connectionManager로..)
con = connectionManager.getConnection();
아마 이 경우는 <context:annotation-config /> 설정이 없으신 경우 같습니다.
이 설정을 추가하셔야지 @Resource가 동작합니다. (<bean />으로 정의하시든.. @Service로 사용하시든 처리됨)
좀 이상한 것은... <context:annotation-config /> 없는 경우라면..
null point exception이.. con = connectionManager.getConnection(); 부분 자체에서 발생을 합니다. (getConnection() 내부도 발생하지만.. connectionManager 자체가 null 이기 때문에.. 사전에 발생)
이 부분 확인 부탁드립니다..
감사합니다.
ConnectionManager를 @Resource로 사용하셨네요..
@Resource
ConnectionManager connectionManager;
이 경우는 아래와 같이 하시면 null pointer exception이 발생하지 않아야 합니다.. (ConnectionManager가 아닌 connectionManager로..)
con = connectionManager.getConnection();
아마 이 경우는 <context:annotation-config /> 설정이 없으신 경우 같습니다.
이 설정을 추가하셔야지 @Resource가 동작합니다. (<bean />으로 정의하시든.. @Service로 사용하시든 처리됨)
좀 이상한 것은... <context:annotation-config /> 없는 경우라면..
null point exception이.. con = connectionManager.getConnection(); 부분 자체에서 발생을 합니다. (getConnection() 내부도 발생하지만.. connectionManager 자체가 null 이기 때문에.. 사전에 발생)
이 부분 확인 부탁드립니다..
감사합니다.