Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

Spring Boot + JSP + Spring Security: DataSource 구성 실패 오류 해결 – MySQL에서 DataSource 설정하는 방법

Spring Boot에서 DataSource 구성 오류란?

Spring Boot 애플리케이션 실행 시 "Failed to configure a DataSource(DataSource를 구성하지 못했습니다)" 오류가 발생하는 경우가 있습니다. 이는 주로 데이터베이스 연결 정보가 올바르게 설정되지 않았거나 JDBC 드라이버가 누락되었을 때 나타나는 문제입니다. Spring Boot에서 DataSource를 구성하는 가장 기본적인 방법은 application.properties 파일에 데이터베이스 연결 정보를 정의하는 것입니다.

application.properties 설정 방법

Spring Boot의 application.properties 파일을 아래와 같이 작성합니다.

spring.datasource.username=사용자이름
spring.datasource.password=비밀번호
spring.datasource.url=jdbc:mysql://localhost:3306/데이터베이스명
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

MySQL 8.x 버전을 사용하는 경우 드라이버 클래스명은 com.mysql.cj.jdbc.Driver를 지정하고, build.gradle 또는 pom.xml에 MySQL Connector/J 의존성이 포함되어 있는지 반드시 확인하세요.

프로젝트 구조

전체 프로젝트 구조는 다음과 같습니다.

Spring Boot + JSP + Spring Security: DataSource 구성 실패 오류 해결 – MySQL에서 DataSource 설정하는 방법

예제 1: 컨트롤러 클래스 작성

위 개념을 실제로 이해하기 위해 Spring Boot로 간단한 컨트롤러 클래스를 만들어 보겠습니다. Java 코드는 다음과 같습니다.

package com.demo.controller;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/users")
public class DisplayController {

    @Autowired
    EntityManager entityManager;

    @GetMapping("/getdata")
    public String getAll() {
        Query data = entityManager.createNativeQuery("select first_name from demo25");
        List<String> allData = data.getResultList();
        return allData.toString();
    }
}

위 코드는 EntityManager를 활용해 네이티브 SQL 쿼리를 실행하고, demo25 테이블의 first_name 컬럼 값을 조회하여 반환하는 간단한 REST 컨트롤러입니다.

예제 2: 메인 애플리케이션 클래스

다음은 Spring Boot의 메인 클래스입니다.

package com.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class JavaMysqlDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(JavaMysqlDemoApplication.class, args);
    }
}

실제 적용된 application.properties 파일의 모습은 다음과 같습니다.

Spring Boot + JSP + Spring Security: DataSource 구성 실패 오류 해결 – MySQL에서 DataSource 설정하는 방법

애플리케이션 실행 및 결과 확인

프로젝트를 실행하려면 메인 클래스를 마우스 오른쪽 버튼으로 클릭한 후 "Run As → Java Application"을 선택합니다. 실행이 완료되면 브라우저에서 다음 URL로 접속하여 결과를 확인할 수 있습니다.

https://localhost:포트번호/users/getdata
Spring Boot + JSP + Spring Security: DataSource 구성 실패 오류 해결 – MySQL에서 DataSource 설정하는 방법

테스트용 데이터베이스 준비하기

먼저 MySQL에서 테이블을 생성합니다.

mysql> create table demo25
-> (
-> first_name varchar(20)
-> );
Query OK, 0 rows affected (0.72 sec)

insert 명령으로 테스트 레코드를 추가합니다.

mysql> insert into demo25 values('David');
Query OK, 1 row affected (0.10 sec)

mysql> insert into demo25 values('Adam');
Query OK, 1 row affected (0.13 sec)

mysql> insert into demo25 values('Chris');
Query OK, 1 row affected (0.10 sec)

select 문으로 저장된 레코드를 확인합니다.

mysql> select * from demo25;

실행 결과는 다음과 같습니다.

+------------+
| first_name |
+------------+
| David      |
| Adam       |
| Chris      |
+------------+
3 rows in set (0.00 sec)

이제 브라우저에서 /users/getdata 엔드포인트에 접속하면 [David, Adam, Chris] 형태로 데이터가 정상적으로 출력되는 것을 확인할 수 있습니다.

참고: DataSource 구성 실패 오류의 주요 원인

  • spring-boot-starter-data-jpa와 같은 JPA 의존성을 추가했지만 데이터베이스 연결 정보를 설정하지 않은 경우
  • URL, 사용자 이름, 비밀번호 등의 연결 정보가 잘못 입력된 경우
  • MySQL Connector/J와 같은 JDBC 드라이버 의존성이 누락된 경우

만약 데이터베이스 없이 애플리케이션을 실행해야 하는 상황이라면 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) 옵션을 사용해 DataSource 자동 구성을 제외할 수도 있습니다.