[코드] 1/12 수 Spring Framework < root-context.xml >
servlet-context.xmll / root-context.xmll : 스프링 설정파일!
<bean> : 객체를 생성하는 태그
<!-- DB연결 : API(HikariCP-히카리) -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/bigdata"/>
<property name="username" value="root"/>
<property name="password" value="12345"/>
</bean>
해당 DB에 맞는 드라이버클래스이름 / URL / ID / PW 입력
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<!-- HikariDataSource : DBCP를 만들어주는 역할 -->
<constructor-arg ref="hikariConfig" /> <!--생성자메소드를 호출해라 / ref:a를 참조해라!-->
</bean>
위의 hikariConfig를 참조해서 DataSource(DBCP)을 만들어줘라
/* 구현체 -> 설정파일에 만들어야함! root-context.xml에서!!!
public class SqlSessionFactoryBean implements BoardMapper{
public List<Board> selectAll(){
}
}*/
<!-- BoardMapper interface(Spring)의 구현클래스를 생성 (SqlSessionFactoryBean:mybatis) -->
<!-- 메모리 어딘가에 객체생성 -->
<!-- HikariDataSource와 연결해서 사용 -->
<!-- Spring과 mybatis를 브릿지해준다 -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- name은 SqlSessionFactoryBean안에 들어있고 / ref는 위의 id=dataSource인 bean을 참조 -->
</bean>
DB에 연결해서 값을 받아올려면 구현체(객체)가 필요하다!
객체선언 또한 root-context.xml에서 한다!
<beans ③ xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
② xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
④ xsi:schemaLocation="
http://mybatis.org/schema/mybatis-spring
http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Mapper interface들을 메모리에 올리는 방법(scan) -->
① <mybatis-spring:scan base-package="kr.smhrd.mapper"/>
<!-- scan : 훑어봐라 , xml(DTD, schema)에는 없음.-->
구현체가 늘어나면 이 너무 많아질 수 있다.
Scan을 사용하면 여러 개의 mapper들을 한 번에 올릴 수 있다.(부모자식관계)
* ① base-package설정 : mapper.xml(sql문들이 담긴 파일)들을 메모리에 올릴 때는 한꺼번에 올린다.
* ② xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring" : scan태그를 사용하기위해
접두사(mybatis-spring)로 치환
ex) mybatis-spring:scan
* 접두사 안 붙여준게 두 개라면 충돌이 날 수 있음
* ③ xmlns에서 ns는 namespace를 뜻한다. namespace를 걸어주면 schema파일도 연결되어야한다.
④ 그래서 schemaLocation에 파일URL 추가 해줄 것!
( 위의 접두사에 써준 URL은 파일을 업로드를 해준게 아님 )
메모리 어딘가에 객체가 생성되었으므로
@Autowired : 생성된 객체(root-context.xml)를 자동으로 연결 시켜라
+ copy Qualified Name : 패키지 이름을 포함해서 전체 클래스를 복사해라
★ 톰캣서버 로딩시 - xml파일 검사 - xml오류있을시 톰캣서버 로딩 시 에러뜸