✔ root-context.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- Root Context: defines shared resources visible to all other web components --> <bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property> <property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521/xe"></property> <property name="username" value="scott"></property> <property name="password" value="tiger"></property> </bean> <!-- HikariCP configuration --> <bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close"> <constructor-arg ref="hikariConfig" /> </bean> <!-- 1.번 방법을 위하여 mapperLocations 을 추가 함 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath:/mappers/**/*.xml" /> </bean> <!-- 1번 방식 사용을 위한 sqlSession --> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> </beans>
📍 스프링에서의 커넥션 풀
자바에서는 기본적으로 DataSource 인터페이스를 사용하여 커넥션풀을 관리한다.
Spring에서는 사용자가 직접 커넥션을 관리할 필요없이 자동화된 기법들을 제공하는데
SpringBoot 2.0 이전에는 tomcat-jdbc를 사용,
현재 2.0이후 부터는 HikariCP를 기본옵션으로 채택
@Autowired
@Inject
@Resource
📍 @Resource
- Java에서 지원하는 어노테이션
- 특정 프레임 워크에 종속적이지 않다.
✔ 찾는 순서
이름 -> 타입 -> @Qualifier -> 실패
name 속성의 이름을 기준으로 찾음
없으면 타입, 없으면 @Qualifier 어노테이션의 유무를 찾아 그 어노테이션이 붙은 속성에 의존성을 주입
<context:annotation-config/>
구문을 꼭 xml 설정파일에 추가해야한다.✔ 사용할 수 있는 위치
- 멤버변수 , setter 메소드
📍 @Autowired
- Spring에서 지원하는 어노테이션
✔ 찾는 순서
타입 -> 이름 -> @Qualifier -> 실패
@Autowired는 주입하려고 하는 객체의 타입이 일치하는지를 찾고 객체를 자동으로 주입
만약에 타입이 존재하지 않는다면 @Autowired에 위치한 속성명이 일치하는 bean을 컨테이너에서 찾는다.
이름이 없을 경우 @Qualifier 어노테이션의 유무를 찾아 그 어노테이션이 붙은 속성에 의존성을 주입
<context:annotation-config/>
구문을 꼭 xml 설정파일에 추가해야한다.✔ 사용할 수 있는 위치
- 멤버변수, setter메소드, 생성자, 일반 메소드에 -적용가능
📍 @Inject
- Java에서 지원하는 어노테이션
- 특정 프레임 워크에 종속적이지 않다.
✔ 찾는 순서
타입 -> @Qualifier-> 이름 -> 실패
@Aurowired와 동일하게 작동하지만 찾는 순서가 다르다.
@Inject를 사용하기 위해서는 maven이나 gradle에 javax 라이브러리 의존성을 추가해야한다.
import javax.inject.Inject;
✔ 사용할 수 있는 위치
- 멤버변수, setter 메소드, 생성자, 일반 메소드에 적용 가능
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=syc0821&logNo=221436412469
https://jung-story.tistory.com/128