Spring MVC 3.X 웹 프로젝트가 여러 데이터 원본과 연결되는 해결 (데이터베이스)
5661 단어 spring mvc
먼저 다음 데이터베이스 연결 설정을 소개합니다.
jdbc.properties 파일의 속성
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://172.17.0.68:3306/xh_bidding?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=
spring 프로필 app-config.xml
<context:component-scan base-package="com.xxx.news" />
<bean id="dataSource" name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
[color=red]<context:property-placeholder location="classpath:jdbc.properties" />[/color] </bean>
봄은 먼저com을 설명합니다.xxx.news 아래의 전역 변수는 bean---dataSource입니다.그건 다들 아시잖아요.EL 표현식으로 값을 가져옵니다.빨간색 설명 파일 경로입니다.
java-DAO 코드
public abstract class BaseDAO extends Base {
private JdbcTemplate jdbcTemplate;
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Autowired
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(
dataSource);
}
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() {
return namedParameterJdbcTemplate;
}
}
기본적으로 이렇게 쓰기만 하면 된다.봄의 자동 주입 기본값은 형식에 따라 주입할 대상을 찾을 수 있습니다.@Autowired
DateSource라는 bean을 찾을 겁니다.하지만 같은 종류의 비안이 여러 개 발견됐을 때 그 하나를 주입할 줄 몰랐어요.기본값이 첫 번째에 들어갈 것 같습니다.그러나 나는 기본 쓰기를 추천하지 않는다. 이렇게 하면 사람을 헷갈리게 할 수 있다. 주입된 대상과 bean 대상이 도대체 어떤 방식으로 관련되었는지 이해하기 어렵다.
상기 방식은spring의 단일 데이터 원본 설정을 실현할 수 있습니다.
한 번에 여러 개의 데이터 원본을 설정하는 것은 사실 생각보다 그렇게 복잡하지 않아서 통하면 좀 웃을 수가 없어요!그래도 만져보면 가치가 있어.
jdbc.properties 파일의 속성
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://172.17.0.68:3306/xh_bidding?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=
#jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url2=jdbc:mysql://172.17.0.68:3306/xh_payment?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
jdbc.username2=root
#jdbc.password2=
spring 프로필 app-config.xml
<context:component-scan base-package="com.xxx.news" />
<bean id="dataSource" name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<bean id="dataSource2" name="dataSource2" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url2}" />
<property name="username" value="${jdbc.username2}" />
<property name="password" value="${jdbc.password}" />
</bean>
<context:property-placeholder location="classpath:jdbc.properties" />
이상의 뜻은 아무런 변화가 없다
java 코드 DAO
public abstract class BaseDAO extends Base {
private JdbcTemplate jdbcTemplate;
private JdbcTemplate jdbcTemplate2;
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
private NamedParameterJdbcTemplate namedParameterJdbcTemplate2;
@Autowired
@Resource(name="dataSource")
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(
dataSource);
}
@Autowired
@Resource(name="dataSource2")
public void setDataSource2(DataSource dataSource2){
this.jdbcTemplate2 = new JdbcTemplate(dataSource2);
this.namedParameterJdbcTemplate2 = new NamedParameterJdbcTemplate(dataSource2);
}
public JdbcTemplate getJdbcTemplate() {
return jdbcTemplate;
}
public JdbcTemplate getJdbcTemplate2() {
return jdbcTemplate2;
}
public NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() {
return namedParameterJdbcTemplate;
}
public NamedParameterJdbcTemplate getNamedParameterJdbcTemplate2() {
return namedParameterJdbcTemplate2;
}
}
같은 종류의 비안이 여러 개 나타날 때bean을 주입하는name을 지정해야 합니다.이렇게 하면 대응하는 bean 대상을 찾을 수 있습니다. @Resource(name="dataSource")
이상 jdbc 연결 방식도 여러 파일로 나누어 쓸 수 있습니다
이렇게 하면 실현할 수 있다.간단해, 편리해!
감사
단 총동지가 준 지도.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
@Component와 @Controller의 차이쓸데없이 느껴지던 MVC 계층도, 그냥 되는 거지 싶던 어노테이션도 셀 수 없이 많은 선배 개발자들의 피눈물과 절망, 숨쉬는 내뱉던 그들의 욕지거리와 쌓여가는 재떨이 속 담배꽁초들, 그럼에도 불구하고 끊임 없이 더 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.