아무튼 개발
article thumbnail
반응형

 

 

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일 월요일 수업 🌝

스프링을 배우는 역사적인(?) 첫 시간이었다!

복잡하긴 했지만 수업이 끝나고 자습시간에 스터디를 하면서

발표자가 되어 스터디원들에게 배운 내용을 설명하다 보니 어느 정도의 흐름이 눈에 보이게 되었다.

 

선생님 설명 다 타이핑치다 보니 팔이 꽤나 아팠다 ^ㅠ^.. 내일도 파이팅!

반응형
profile

아무튼 개발

@릴쥬

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...