Spring Framework
개념
JAVA enterprise 개발의 효율성을 높이는 오픈소스 경량 애플리케이션 프레임워크
로드 존슨이 만들었으며 개발의 복잡성을 해결하기 위해 발전되었다.
POJO 프레임워크 (비침투적 프레임워크)
- 기술 도구
- 제어의 역전(Inversion of Control)
- 의존성 주입(Dependency Injection)
- 애스팩트 지향 프로그래밍 (Aspect Oriented Programming)
- 구성 요소
- Spring Core
- Spring Context
- Spring DAO
- Spring ORM
- Spring AOP
- Spring Web
- Spring Web MVC
셋팅
<applicationContext.xml>
스프링의 환경세팅을 통해 iBatis로 DB를 연결하는 것과
IoC에 대해 알아보겠다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.5.xsd">
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost"/>
<property name="username" value="aaa"/>
<property name="password" value="a12"/>
</bean>
DB 연결을 처리하기 위해, 즉 Spring에서 iBatis를 세팅한다.
id는 사용자 정의이며 property의 name명은 class의 메소드이자 set으로 시작하는 메소드이다.
메소드명의 set 부분을 제외한 나머지 메소드명을 적어주는 것이다.
DB의 연결을 할 수 있도록 value에 각각의 값을 입력해준다.
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"
p:sqlMapClient-ref="sqlMapClient"></bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"
p:dataSource-ref="dataSource" p:configLocation="WEB-INF/sqlMapConfig/sqlMapConfig.xml"/>
</beans>
트랜잭션을 처리하기 위한 코딩을 입력해준다.
ref 값은 위의 dataSource의 'id'값을 가져오는 것이다. 트랙잭션으로 dataSource를 감싼다.
또한 sqlMapClientTemplate 과 sqlMapClient는 클라이언트가 사용할 수 있기 위함이다.
p:변수-ref="참조할 변수명" 이므로, 각각의 값을 입력해준다.
sqlMapClient의 클래스는 클라이언트가 사용할 수 있는 빈 객체를 만들어준다.
ref 를 통해 값을 넘겨주는 것이다.
마지막의 p:configLocation는 파일의 경로를 입력해주는 곳이다.
이들의 관계는 모두 IoC관계이다.
Inversion on Control (IoC : 제어의 역전)
상위부터 구조를 살펴보자면
Transaction > sqlMapClientTemplate > sqlMapClient > dataSource 순이다.
ref를 통해 참조하고 있다.
이렇게 하여 db의 위치 정보를 가져온 후 사용자가 입력하는 sql을 합칠 수 있게 되는 것이다.
<sqlMapConfig>
위에 p:configLocation에서 경로로 나왔던 파일이다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL MapConfig 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings cacheModelsEnabled="false" useStatementNamespaces="true"/>
<sqlMap resource="com/util/sqlMap/temp_sqlMap.xml"/>
</sqlMapConfig>
기존에는 resource 위에 transactionManager와 dataSource를 입력해줘야 했지만
위의 applicationContext.xml에서 만들었기 때문에 생략할 수 있는 것이다.
resource의 temp는 가장 기본 세팅이며, 파일을 만들 때마다 맞춰서 xml 추가해주면 된다.
3월 21일 월요일 수업 🌝
스프링을 배우는 역사적인(?) 첫 시간이었다!
복잡하긴 했지만 수업이 끝나고 자습시간에 스터디를 하면서
발표자가 되어 스터디원들에게 배운 내용을 설명하다 보니 어느 정도의 흐름이 눈에 보이게 되었다.
선생님 설명 다 타이핑치다 보니 팔이 꽤나 아팠다 ^ㅠ^.. 내일도 파이팅!
'개발 교육 TIL > back-end' 카테고리의 다른 글
[Spring] Annotation 어노테이션 개념, 예제(Controller, RequestMapping) / viewResolver (0) | 2022.03.22 |
---|---|
[스프링] JRE 버전 바꾸는 법 (이클립스 Java) (0) | 2022.03.22 |
[Struts2] 파일 업로드 / 다운로드 - 예제 (0) | 2022.03.14 |
[Struts] 스트럿츠2 세팅 - struts.properties / 예제 - ModelDriven, Preparable, 모드 (2) | 2022.03.11 |
[Struts] 파일 업로드 - FormFile, DispatchAction, session (0) | 2022.03.10 |