Spring

[코드] 1/12 수 Spring Framework < root-context.xml >

PHM 2022. 1. 12. 19:26

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오류있을시 톰캣서버 로딩 시 에러뜸