Spring MVC 3.X 웹 프로젝트가 여러 데이터 원본과 연결되는 해결 (데이터베이스)

5661 단어 spring mvc
[align=left] [/align] 오늘 프로젝트에는 하나의 프로젝트와 여러 개의 데이터베이스가 필요합니다.프레임은 또 스프링 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 연결 방식도 여러 파일로 나누어 쓸 수 있습니다
이렇게 하면 실현할 수 있다.간단해, 편리해!
감사
단 총동지가 준 지도.

좋은 웹페이지 즐겨찾기