eGov - 전자정부프레임워크 설정

노력하는백엔드·2025년 8월 11일
0

spring

목록 보기
3/4

프로젝트 생성

  • 프로젝트 생성

  • 프로젝트 설정

프로젝트 구조 및 설정

```
demo/
├─ pom.xml                                        # Maven 프로젝트 의존성과 빌드 설정 파일
└─ src/
├── main/
│   └── java/
│       └── com/demo/                          # 자바 소스 기본 패키지
│           ├── web/
│           │   └── LoginController.java       # 로그인 요청 처리하는 Spring MVC 컨트롤러
│           ├── dto/
│           │   └── LoginReqeustDTO.java       # 로그인 요청 DTO
│           │   └── LoginResponseDTO.java       # 로그인 응답 DTO
│           ├── service/
│           │   └── LoginService.java          # 로그인 서비스 인터페이스 (비즈니스 로직 정의)
│           ├── service/impl/
│           │   └── LoginServiceImpl.java      # 로그인 서비스 구현체 (DB 조회 등 실제 로직 수행)
│           └── mapper/
│               └── UserMapper.java            # MyBatis 매퍼 인터페이스 (쿼리 메서드 선언)
│
├── resources/
│       ├── context-datasource.xml             # Spring의 DB 및 MyBatis 설정 (DataSource, SqlSessionFactory 등)
│       ├── mybatis-config.xml                 # MyBatis 전역 설정 파일 (카멜케이스 매핑 등)
│       └── mapper/
│           └── UserMapper.xml                 # 실제 SQL 정의가 들어있는 MyBatis 매퍼 XML
│
└── webapp/                                    # 웹 애플리케이션 루트 (정적 자원 및 JSP)
├── index.jsp                              # 기본 시작 페이지 (예: 로그인 페이지로 redirect)
├── WEB-INF/
│   ├── web.xml                            # 서블릿 설정 (DispatcherServlet 등록, 필터 설정 등)
│   ├── config/
│   │   └── egovframework/
│   │       └── springmvc/
│   │           └── dispatcher-servlet.xml # Spring MVC 설정 (component-scan, ViewResolver 등)
│   └── lib/                               # 수동으로 JAR을 추가할 때 사용하는 디렉토리 (보통 Maven이면 비어 있음)
└── views/
├── login.jsp                          # 로그인 화면 JSP
└── main.jsp                           # 로그인 성공 시 이동하는 메인 페이지 JSP

프로젝트 설정

  • context-datasource.xml
    • 실질적인 DB 연결 설정하는 xml
    • db의 계정과 비밀번호를 설정을 진행한다.
      • DB 연결 설정
        <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        property name="url" value="jdbc:mysql://localhost:3307/test_db?serverTimezone=Asia/Seoul"/> 
        property name="username" value="root"/>
        <property name="password" value="1234"/>
        </bean>
        • id="dataSource": 다른 설정에서 이 DataSource를 참조할 수 있도록 ID 지정
        • BasicDataSource: Apache DBCP2의 커넥션 풀 클래스
        • driverClassName: MySQL 8.x 드라이버 클래스
        • url: DB 주소 (localhost:3307, DB명은 test_db)
        • serverTimezone=Asia/Seoul: 시간 오류 방지
        • username/password: DB 로그인 정보
      • MyBatis와 Spring 연결 설정
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/> 
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
        </bean>
        • MyBatisSpring을 연결하는 핵심 설정
        • dataSource: 위에서 정의한 DataSource를 주입
        • configLocation: 전역 MyBatis 설정 파일 (src/main/resources/mybatis-config.xml)
        • mapperLocations: SQL 정의가 담긴 XML 파일 경로
  • mybatis-config.xml
    ```
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
     <settings>
      <setting name="mapUnderscoreToCamelCase" value="true"/>
     </settings>
    </configuration>
    ```
    
    ```c
    <setting name="mapUnderscoreToCamelCase" value="true"/>
    ```
    • userid 같은 경우 를 제거 후 CamelCase로 변환 후 자동 매핑해줌
  • dispatcher-servlet.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" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation=" 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.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
     <!-- 컨트롤러 스캔 경로 -->
      <context:component-scan base-package="com.demo" />
      <import resource="classpath*:mybatis-config.xml"/>	
      <import resource="classpath:context-datasource.xml" /> 
      <!-- 뷰 리졸버 설정 -->
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
      <property name="prefix" value="/WEB-INF/views/" /> 
      <property name="suffix" value=".jsp" /> 
      </bean> 
      <!-- 애노테이션 기반 설정 --> 
      <mvc:annotation-driven />
    </beans>
    • 컨트롤러 스캔
      • <context:component-scan base-package="com.demo" />
        • com.demo 를 base-package로 설정할 경우 해당 패키지 아래에 Controller, Service 등 어노테이션이 붙은 클래스를 자동으로 스캔한다.
    • MyBatis 및 DB 설정 가져오기
      <import resource="classpath*:mybatis-config.xml"/>
      <import resource="classpath:context-datasource.xml" />
      • 전역 Mybatis 파일 설정 및 DB 연결 설정
    • 뷰 리졸버 설정
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
      <property name="prefix" value="/WEB-INF/views/" /> 
      <property name="suffix" value=".jsp" />
      </bean>
      • 컨트롤러가 반환한 문자열을 JSP 경로로 변환하는 역할
      • 예: return "login"/WEB-INF/views/login.jsp 로 매핑됨
    • 애노테이션 기반 요청 처리 활성화
      <mvc:annotation-driven />
      • @RequestMapping, @GetMapping, @PostMapping 등 어노테이션이 동작하도록 설정
      • 내부적으로 RequestMappingHandlerMapping, RequestMappingHandlerAdapter 등이 등록됨
      • JSON 변환기(HttpMessageConverter) 등도 자동 등록됨

dependency 설정

<dependency>
		    <groupId>mysql</groupId>
		    <artifactId>mysql-connector-java</artifactId>
		    <version>8.0.33</version>
		</dependency>
		<!-- MyBatis -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis</artifactId>
		    <version>3.5.13</version>
		</dependency>
		<!-- MyBatis-Spring -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis-spring</artifactId>
		    <version>2.0.7</version>
		</dependency>
		<dependency>
		    <groupId>javax.servlet</groupId>
		    <artifactId>jstl</artifactId>
		    <version>1.2</version>
		</dependency>
  • MySQL JDBC 드라이버
    • MySQL과 Java를 연결하는 JDBC 드라이버
    • MySQL 8.x를 사용하는 경우 반드시 com.mysql.cj.jdbc.Driver와 함께 써야 함
  • MyBatis 프레임워크
    • SQL 매핑 프레임워크인 MyBatis의 핵심 라이브러리
    • UserMapper.xmlUserMapper.java 같은 매퍼 구조를 통해 SQL → 객체 자동 바인딩을 처리
    • 단독으로는 Spring과 연동되지 않음
  • MyBatis-Spring 연동 모듈
    • MyBatis와 Spring을 연결해주는 어댑터 역할
    • SqlSessionFactoryBean, MapperScannerConfigurer 등의 Spring bean 설정에서 사용됨
    • Spring 환경에서 MyBatis를 편리하게 사용할 수 있도록 해주는 라이브러리
  • JSTL (JSP Standard Tag Library)
    • JSP에서 <c:if>, <c:forEach>, <c:url>JSTL 태그를 사용하기 위한 라이브러리
    • login.jsp, main.jsp 같은 JSP에서 조건 분기, 반복, URL 처리 등 템플릿 기능 제공
profile
열심히 노력하는 백엔드입니다.

0개의 댓글