Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 문자 단위 스트림
- 인터페이스
- 보조 스트림
- try-catch
- 예외 처리
- 상속
- 변수
- MPA
- 자료형
- Java
- 메서드
- 파이팅
- 배열
- 코린이
- FileInputStream
- 다형성
- throws
- 개발자
- 코딩
- exception
- ArrayList
- 자바
- 백엔드
- node.js
- 바이트 단위 스트림
- 졸리다
- 새벽공부
- 인스턴스
- SSR
- 초보개발자
Archives
- Today
- Total
SHUSTORY
라이브러리 살펴보기 본문
728x90
- build.grade를 보면 다음 세 가지 라이브러리밖에 없지만
- 막상 라이브러리를 들어가면 엄청 많음
- External Libraries > 땡겨온 라이브러리들
- 보면 내가 땡긴 적도 없는 라이브러리들이 있는 것을 볼 수 있다. 왜 그런걸까?
- build해보면 몇십메가는 나올거다. 요즘은 앱 하나 만들려면 이정도는 기본이다. 이게 뭐냐면 gradle이나 maven같은 빌드 툴들은 의존 관계를 다 관리해준다. 무슨 말이냐면 내가 필요로 하는 특정 라이브러리( 예를 들어 스프링부트 스타터 웹 라이브러리 )를 땡기면 얘가 필요로 하는 의존하는 애들을 다 땡겨와준다.
- 좌측 하단 클릭 - 오른쪽 바에 뜬 Gradle 클릭해서 보면 땡겨오고 땡겨오고 한 것들 볼 수 있다.
- Dependencies > 라이브러리 간의 의존 관계 ( 계속 타고 타고 들어간다. )
- 예전에는 웹 애플리케이션 개발을 위해서는 웹 서버와 웹 어플리케이션 서버(WAS)를 설치하고 설정해야 했다.
- 거기에 자바 코드를 밀어넣는 형식. 웹 서버랑 개발 라이브러리가 완전히 분리되어서 톰캣 서버에 들어가서 설치해야 하는 불편함이 있었다.
- 그러나 지금은 스프링 프레임워크를 이용하여 웹 애플리케이션 개발을 할 때, 내장된 톰캣 서버와 같은 WAS가 실행되어 서버를 따로 설치하지 않아도 되는 경우가 많다.
- 소스 라이브러리에서 이런 웹서버를 그냥 들고 있다. ( 임베디드 / 내장 )
실행만 하는데 웹 서버가 뜬다. ( 저번 시간에 해봤던 tomcat - 8080 처럼 )
- 소스 라이브러리에서 이런 웹서버를 그냥 들고 있다. ( 임베디드 / 내장 )
- 톰캣은 아파치 소프트웨어 재단에서 개발한 웹 애플리케이션 서버(WAS)이다. 웹 애플리케이션 서버는 클라이언트에서 요청한 웹 페이지나 웹 애플리케이션을 동적으로 생성하는 서버 프로그램이다.
- 톰캣은 Java Servlet과 JavaServerPages(JSP) 기술을 사용하여 동적으로 웹 페이지를 생성하는 웹 애플리케이션을 실행할 수 있으며, 웹 서버와 연동하여 정적인 웹 페이지와 파일들을 제공하며, HTTPS 프로토콜을 사용한 보안 연결을 지원한다.
- 스프링 프레임워크에서는 내장형 톰캣과 같은 WAS를 제공하여, 별도의 톰캣 서버를 설치하고 설정하는 번거로움을 덜어준다. 개발자는 단순히 스프링 프레임워크에 필요한 라이브러리를 추가하고 설정을 작성하면 된다.
* 로그 - 현업에 일하는 사람들은 system.out.println이 아닌 로그로 출력을 해야 한다.
로그로 남겨야 에러 및 로그파일 관리가 가능하다. 그런데 취준생이나 서버로 안넘어온 사람들은 로그 왜 쓰지? 할 수 있음
- 로깅은 개발자가 개발한 애플리케이션의 실행 상태를 기록하는 것이다. 로그는 애플리케이션이 실행되는 동안 발생하는 이벤트나 상황에 대한 정보를 기록하므로, 이를 통해 애플리케이션의 동작 상태를 파악하고 문제를 진단하는 데 도움을 준다.
- System.out.println( ) 메소드를 사용하여 출력하는 것은 개발자가 개발 중 디버깅을 위해 사용할 수 있지만, 실제 서비스에서는 로깅을 사용해야 한다. System.out.println( )은 단순히 콘솔에 출력하는 기능이므로, 로그와 같이 시스템의 상태를 기록하고 저장하는 기능을 제공하지 않는다.
- 로그를 사용하면, 애플리케이션이 어떤 상태에서 문제가 발생하는지 파악할 수 있으며, 이를 기반으로 문제를 분석하고 해결할 수 있다. 또한, 로그는 시간순으로 정렬되어 저장되므로, 문제 발생 시점을 추적하기 용이하다.
- 로그를 기록하기 위해서는 로깅 라이브러리를 사용해야 한다. 대표적인 로깅 라이브러리로는 Logback, Log4j, Slf4j 등이 있다. 이러한 로깅 라이브러리를 사용하여 로그 레벨을 지정하고, 출력 방식을 설정할 수 있다. 참고로 로그 레벨은 로그 메시지를 어느 정도의 중요도와 우선순위로 분류하는 기준으로, 로그 레벨은 TRACE, DEBUG, INFO, WARN, ERROR, FATAL 여섯 가지로 나뉜다.
- 즉 로그를 사용하여 애플리케이션의 실행 상태를 기록하고 관리하면, 애플리케이션의 문제를 신속하게 발견하고 해결할 수 있으며, 서비스의 안전성을 높일 수 있다.
- 라이브러리를 살펴보면 그 중 spring-boot-starter-logging을 볼 수 있다. ( 얘가 logback, slf4j 필요해서 땡긴거임 )
- logback도 있고, slf4j도 볼 수 있다. 둘은 모두 자바 언어용 로깅 라이브러리이다.
- slf4j
- 로깅 인터페이스를 제공하며, 로그 메시지를 출력하는 실제 로그 라이브러리와 연결되어야 한다. 즉, slf4j는 로깅 코드를 작성할 때 사용되며, 실제 로그 메시지를 출력하기 위해서는 slf4j와 함께 사용할 로깅 라이브러리가 필요하다.
- logback
- 자바 언어용 로깅 라이브러리인 log4j의 개발자가 개발했다. logback은 자바 5 이상에서 사용할 수 있으며, 자바 플랫폼용으로 만들어졌다. 속도가 빠르고, 설정이 쉽고, 유연성이 높아서 대부분의 상황에서 사용하기 적합하다.
- 두 라이브러리의 차이점은, slf4j는 로깅 인터페이스만 제공하고 로그 메시지 출력은 다른 로깅 라이브러리와 연결해야 한다는 것이고, logback은 실제 로그 메시지 출력을 담당하는 로깅 라이브러리 중 하나이다.
- 요즘은 logback이 더 자주 쓰인다. 이는 logback이 속도가 더 빠르고 설정이 쉽고 유연성이 높아 대부분의 상황에서 사용하기 적합하기 때문이며, 또한 스프링 프레임워크에서 기본 로깅 라이브러리로 logback이 사용되기 때문에 많은 개발자들이 logback을 사용하는 추세이다.
- 테스트 관련 라이브러리를 살펴보기 위해 spring-boot-starter-test를 열어 보면 여러 가지 라이브러리를 볼 수 있다.
- 자바에서 테스트를 할 때 가장 많이 사용되는 라이브러리는 JUnit이다. JUnit은 Java 언어를 위한 유닛 테스트 프레임워크로, 각각의 테스트 케이스를 위한 코드를 작성하고 실행할 수 있도록 지원한다.
- JUnit5는 JUnit의 다음 버전으로, 2017년에 출시되었다. JUnit5는 이전 버전의 JUnit과는 많이 달라졌으며, Jupiter라는 새로운 테스트 엔진이 추가되어 테스트 작성 방법이 많이 바뀌었다. Jupiter는 기존의 JUnit4와 호환되지 않으며, 새로운 애노테이션과 기능을 도입하여 유연하고 확장성 있는 테스트를 지원한다.
- Mockito는 자바에서 가장 많이 사용되는 모킹 프레임워크 중 하나이다. 객체 지향 개발에서 테스트 대상 객체의 의존성을 제거하고 테스트하는 방법을 제공한다.
- AssertJ는 자바에서 테스트 코더를 더 간결하고 가독성 있게 작성할 수 있도록 도와주는 라이브러리이다. JUnit과 함께 사용되어, 더 효율적인 테스트 코드 작성을 가능하게 한다.
- Mockito와 AssertJ는 테스트 코드 작성을 보다 쉽고 유연하게 도와주는 라이브러리이다. 하지만 테스트 자동화 프레임워크가 아니기 때문에 테스트 메서드를 실행하거나, 테스트 결과를 분석하는 일은 할 수 없다.
- 반면, JUnit은 자바에서 가장 대표적인 테스트 자동화 프레임워크이며, 테스트 코드 작성, 실행, 결과 분석 등의 모든 단계에서 도움을 준다. 따라서 JUnit은 테스트 코드 작성에서 가장 핵심적인 역할을 수행하는 라이브러리이다.
- JUnit은 2000년에 처음 등장했으며, 현재도 지속적으로 업데이트가 이루어지고 있다. JUnit4가 10년 넘게 사용되었다가 최근에는 JUnit5로 넘어가는 추세이다. JUnit5에서는 이전 버전에서 느꼈던 제약 사항들이 해소되고, 테스트 코드 작성이 보다 유연해졌다.
- 스프링은 다양한 라이브러리들이 함께 동작하면서 동작하는데, 이를 이해하고 활용하기 위해서는 다음과 같은 기초 지식들이 필요하다.
- 의존성 관리 : 스프링 프로젝트를 시작할 때 의존성을 관리해야 한다. 이를 위해 Maven이나 Gradle과 같은 빌드 도구를 사용하여 라이브러리를 관리한다.
- 스프링 핵심 라이브러리 : 스프링은 다양한 모듈로 구성되어 있으며, 핵심 기능을 담당하는 스프링 코어, 스프링 컨텍스트 등의 라이브러리가 있다.
- 데이터 액세스 라이브러리 : 스프링은 데이터 액세스를 위한 다양한 라이브러리를 제공한다. JPA, MyBatis, JDBC 등이 있으며, 이를 활용해 DB와 연동하는 방법을 이해해야 한다.
- 웹 개발 라이브러리 : 스프링은 웹 개발을 위한 다양한 라이브러리를 제공한다. 스프링 MVC, 스프링 부트 등이 있으며, 이를 활용해 웹 애플리케이션을 개발하는 방법을 이해해야 한다.
- 테스트 라이브러리 : 스프링은 테스트를 위한 다양한 라이브러리를 제공한다. JUnit, Mockito, AssertJ 등이 있으며, 이를 활용해 테스트를 작성하는 방법을 이해해야 한다.
'프로그래밍 > Spring' 카테고리의 다른 글
프로젝트 생성 (1) | 2023.11.26 |
---|---|
Spring Framework (0) | 2023.11.26 |