2024.10.02.수.TIL Spring Spring Boot

김기남·2024년 10월 2일
post-thumbnail

안녕하세요, 오늘은 Spring 과 Spring Boot 에 대해 정리해 보았습니다.

Spring 과 Spring Boot

Spring은 자바 플랫폼을 위한 애플리케이션 프레임워크로, 다양한 기능을 제공하여 개발자들이 효율적으로 애플리케이션을 개발할 수 있도록 돕습니다. 반면, Spring Boot는 Spring 프레임워크를 기반으로 하여, 더 간편하고 빠르게 애플리케이션을 개발할 수 있도록 설계된 도구입니다. Spring Boot는 설정을 최소화하고, 자동 구성을 통해 개발자들이 더 적은 코드로 더 많은 기능을 구현할 수 있게 해줍니다.

Spring Framework의 특징

Spring Framework는 다음과 같은 주요 특징을 가지고 있습니다:

  • 의존성 주입(Dependency Injection): 객체 간의 의존성을 관리하여, 코드의 결합도를 낮추고 테스트 용이성을 높입니다.
  • 모듈화 : 다양한 모듈로 구성되어 있어, 필요한 기능만 선택하여 사용할 수 있습니다.
  • AOP(Aspect-Oriented Programming): 공통 관심사를 분리하여 코드의 재사용성을 높입니다.
  • 트랜잭션 관리 : 데이터베이스 트랜잭션을 쉽게 관리할 수 있는 기능을 제공합니다.

이러한 특징 덕분에 Spring Framework는 대규모 애플리케이션 개발에 적합합니다.

Spring Boot의 특징

Spring Boot는 다음과 같은 장점을 제공합니다:

  • 자동 구성 : Spring Boot는 애플리케이션의 설정을 자동으로 구성하여, 개발자가 수동으로 설정할 필요를 줄입니다.
  • 스타터 의존성 : 다양한 스타터 의존성을 제공하여, 필요한 라이브러리를 쉽게 추가할 수 있습니다.
  • 내장 서버 : Tomcat, Jetty와 같은 내장 서버를 지원하여, 별도의 서버 설정 없이도 애플리케이션을 실행할 수 있습니다.
  • 간편한 REST API 개발 : RESTful 웹 서비스를 쉽게 구축할 수 있는 기능을 제공합니다.

이러한 특징 덕분에 Spring Boot는 빠르고 간편하게 애플리케이션을 개발하고자 하는 개발자들에게 인기가 많습니다.

Spring과 Spring Boot의 차이점

Spring과 Spring Boot의 가장 큰 차이점은 설정의 복잡성입니다. Spring Framework는 많은 설정이 필요하지만, Spring Boot는 자동 구성을 통해 설정을 최소화합니다. 또한, Spring Boot는 REST API 개발에 최적화되어 있어, 웹 애플리케이션을 빠르게 구축할 수 있습니다.

이미지 출처

특징Spring FrameworkSpring Boot
설정 복잡성높은 설정 필요자동 구성으로 간편함
애플리케이션 유형다양한 애플리케이션 개발 가능주로 REST API 및 단독 애플리케이션 개발
내장 서버 지원별도의 서버 설정 필요내장 서버 지원
스타터 의존성수동으로 의존성 추가스타터 의존성으로 간편하게 추가 가능

이 표를 통해 두 프레임워크의 차이점을 한눈에 확인할 수 있습니다.

이미지 출처

Spring Cloud와의 관계

Spring Cloud는 분산 시스템을 구축하기 위한 도구 모음입니다. Spring Boot와 함께 사용되며, 마이크로서비스 아키텍처를 지원합니다. Spring Cloud는 서비스 발견, 로드 밸런싱, 회로 차단기 등의 기능을 제공하여, 복잡한 분산 시스템을 쉽게 관리할 수 있도록 돕습니다.

Spring 생태계의 다양한 구성 요소

Spring 생태계는 다양한 구성 요소로 이루어져 있습니다. Spring MVC는 웹 애플리케이션 개발을 위한 모듈이며, Spring WebFlux는 비동기 및 반응형 프로그래밍을 지원합니다. 이러한 모듈들은 각각의 필요에 따라 선택하여 사용할 수 있습니다.

이미지 출처

오늘의 코드카타

class Solution {

    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = new int[photo.length];
        for (int i = 0; i < answer.length; i++) {
            for (int j = 0; j < photo[i].length; j++) {
                for (int k = 0; k < name.length; k++) {
                    if (photo[i][j].equals(name[k])) {
                        answer[i] += yearning[k];
                    }
                }
            }
        }
        return answer;
    }
}
import java.util.Arrays;

public class Main {

    public static void main(String[] args) {

        Solution solution = new Solution();

        String[] n1 = {"may", "kein", "kain", "radi"};
        String[] n2 = {"kali", "mari", "don"};
        String[] n3 = {"may", "kein", "kain", "radi"};

        int[] y1 = {5, 10, 1, 3};
        int[] y2 = {11, 1, 55};
        int[] y3 = {5, 10, 1, 3};

        String[][] p1 = {{"may", "kein", "kain", "radi"}, {"may", "kein", "brin", "deny"}, {"kon", "kain", "may", "coni"}};
        String[][] p2 = {{"kali", "mari", "don"}, {"pony", "tom", "teddy"}, {"con", "mona", "don"}};
        String[][] p3 = {{"may"}, {"kein", "deny", "may"}, {"kon", "coni"}};

        System.out.println(Arrays.toString(solution.solution(n1, y1, p1)));
        System.out.println(Arrays.toString(solution.solution(n2, y2, p2)));
        System.out.println(Arrays.toString(solution.solution(n3, y3, p3)));
    }
}

추억 점수

profile
새로운 시작~!

0개의 댓글