◽ Spring, SpringBoot

[Spring - (3) ] "Spring framework"의 xml파일 정리


  1. pom.xml
  2. *Mapper.xml
  3. mybatis-config.xml
  4. root-context.xml
  5. log4j.xml
  6. web.xml

 

 


1. pom.xml


 

JSON데이터 사용
 
 
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>
Color Scripter

 

 

MyBatis 사용 - root-context.xml에도 선언 해야 함
1
2
3
4
5
6
<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
    <version>1.16</version>
</dependency>
r

 

 

UTF-8 처리 필터

  UTF-8을 사용하는 경우는 스프링에서 제공하는 필터를 등록해 주는 것이 좋다.

1
2
3
4
5
6
7
8
9
10
11
12
13
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
r

 

AOP 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!-- spring-aop .. spring-tx 추가 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>        
            
        <!-- AspectJ -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${org.aspectj-version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>${org.aspectj-version}</version>
        </dependency>
 Color Scripter

2. *Mapper.xml


 

<![ CDATA[ ] ]>

  sql 구문안에 비교 연산자가 들어갈 경우(특수문자) 문자열로 인식하게 만들어주는 명령어.

 

 

<incldue refid="">

 - refid(reference id)는 반복되는 쿼리를 미리 작성해 놓고 재활용 할 수 있게 해준다.

 

 


3. mybatis-config.xml


 

들어가기

마이바티스 설정 파일이다. 플러그인 셋팅, 카멜표기맵핑등의 옵션, sql 쿼리문이 있는 맵퍼 파일 위치 등을 설정 할 수 있다.

  XML Mapper를 이용하는데 있어서 매번 parameterType이나 resultType을 패키지까지 포함된 클래스명을 작성하는 일이 번거롭다면 MyBatis의 설정 파일인 mybatis-config.xml을 사용하여 <typeAliases>를 작성해 줄 수 있습니다.

  <typeAliases>는 하위 요소로 <package>와 <typeAlias> 요소를 가질 수 있습니다. 이 요소들을 이용하면 매번 parameterType이나 resultType에 사용하는 클래스의 이름을 'org.zerock.domain'은 생략한 채로 표현하는 것이 가능합니다.

 

mybatis-config.xml
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
 
<configuration>
    <typeAliases>
        <package name="org.zerock.domain"/>
    </typeAliases>
</configuration>    

 

Mybatis Mapper 인터페이스

 참고 : https://bigstupid.tistory.com/23 

 


4. root-context.xml


기본
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!--기본-->
<?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:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
    http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">

 

 

MyBatis 사용 - 데이터베이스 연결 
1
2
3
4
5
6
7
8
<!-- Root Context: defines shared resources visible to all other web components -->
    <!-- 데이타베이스 연결 -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=UTC&amp;characterEncoding=utf-8"></property>
        <property name="username" value="root"></property>
        <property name="password" value="1111"></property>
    </bean>
Scripter

  - & 인식을 못할 경우 : &amp; 로 입력 해야 한다.

 

MyBatis 사용 - sql 실제 구문 연동

1
2
3
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
    </bean>
Color Scripter






 MyBatis 사용 - mybatis생성 연결( XML Mapper 인식하기 위한 작업 )

1
2
3
4
5
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:/mybatis-config.xml"></property>
        <property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property>
    </bean>
Scripter

 

 

 

트랜젝션 처리
1
2
3
4
    <bean id="transactionManager"
        <property name="dataSource" ref="dataSource"></property>
    </bean>
t

 

 

AOP 설정
1
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

 


5. log4j.xml


 

 

들어가기

Log4j는 자바기반의 로깅 유틸리티로, Apache에서 만든 오픈소스 라이브러리다. 

  System.out.println()으로 출력을 하는데, 이런것들이 모두 로그의 한 종류라고 생각할 수 있다. System.out.println()으로 출력하면 되는데 왜 귀찮게 다른걸 사용하냐는 의문이 들 수 있다. 하지만 syso( System.out.println() )는 잘 돌아가는 소스에서 쓸모없이 리소스가 낭비되는 현상이 발생한다

  

 

구조

 

요소   설명
Logger   출력할 메시지를 Appender에 전달한다.
Appender   전달된 로그를 어디에 출력할 지 결정한다. (콘솔 출력, 파일 기록, DB 저장 등)
Layout   로그를 어떤 형식으로 출력할 지 결정한다.

 

 

화면

 

  검은색 글씨들이 log4j.xml에 형식에 따라 생성된 로그들이다.

 

 

 


6. web.xml


 

RestController 사용 시 -  HiddenMothod 활용
1
2
3
4
5
6
7
8
9
    <filter>
        <filter-name>hiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
 
    <filter-mapping>
        <filter-name>hiddenHttpMethodFilter</filter-name>
        <url-pattern>/</url-pattern>
    </filter-mapping>
Color Scripter

 - 브라우저에 따라서 PUT,PATHC,DELETE 방식을 지원하지 않는 경우가 발생할 수 있다. 많은 브라우저가 GET,POST 방식만을 지원하기 때문에 REST 방식을 제대로 사용하려면 브라우저가 지원하지 않는 상황을 고려해야만 한다.

 - PUT,PATHC,DELETE와 같은 전송하는 방식을 'Overloaded POST'라고 한다. 브라우저에서 'Overloaded POST' 방식을 처리되기 위해 위 태그 내용을 추가 한다.

푸터바