Spring과 MySQL 연동 문제상황: Spring의 application.properties 파일에서 MySQL과 연동하는 설정을 진행하였다.원인: spring.datasource.password의 값에 중괄호 {비밀번호}로 작성하여 접속이 안 되었다.해결방안: 중
Why: 과제 제출시에는 아래 질문을 고민해보고 답변을 함께 제출해주세요. 수정, 삭제 API의 request를 어떤 방식으로 사용하셨나요? (param, query, body) -> 수정 : requestBody를 통해 Json을 사용자 정의 객체 형태로 받았다
정의: Spring Framework의 어노테이션으로 웹 요청을 처리하는 Controller 클래스에 사용기능: 메서드가 반환하는 객체를 HTTP 응답 본문으로 직접 반환특징: HTTP 응답 본문으로 반환값 전송반환 객체는 JSON 또는 XML로 자동 변환 (내부적으로
정의: JdbcTemplate은 Spring Framework에서 제공하는 JDBC 데이터 액세스를 단순화하는 도구JdbcTemplate Image주요 역할 및 특징:SQL 쿼리 실행: 직접적인 데이터베이스 CRUD 작업을 위한 SQL 쿼리 실행.커넥션 관리: 데이터베
PreparedStatement는 Java의 JDBC 라이브러리에서 제공하는 인터페이스로 SQL 쿼리를 미리 컴파일하고 나중에 특정 값을 바인딩하여 실행하는 구조를 가진다.특징:재사용성: SQL 쿼리가 미리 컴파일된 상태로 다양한 값을 바인딩하여 같은 쿼리를 여러 번
RowMapperRowMapper는 Spring JDBC의 핵심 개념이다.데이터베이스 쿼리의 결과를 Java 객체로 매핑하는 인터페이스 역할을 한다.즉, 데이터베이스 결과의 각 행을 원하는 Java 객체로 변환한다. 데이터 매핑 과정데이터베이스에서 전달받은 값을 J
조회의 목표데이터베이스에서 제목, 작성자명, 작성 내용, 작성 날짜를 조회하려 한다.작성 날짜를 기준으로 내림차순으로 데이터를 정렬하려고 한다.작성 날짜 추가작성 날짜가 현재 포함되어 있지 않아서 추가 작업이 필요하다.현재 날짜를 생성하기 위해 Calendar를 사용했
조건선택한 게시글의 제목, 작성자명, 작성 날짜, 작성 내용을 조회해야 함. (단순한 게시글 조회 기능만 구현)해결 방안이전에 만든 함수의 리턴값 중에서 제목을 기준으로 게시글을 구분하여 조회하고 그 결과를 리턴하면 될 것 같다고 판단.게시글 조회 예시1게시글 조회 예
조건선택한 게시글 수정 API 구현수정을 요청할 때는 수정할 데이터와 비밀번호를 함께 전송서버에서는 비밀번호의 일치 여부를 확인 후, 제목, 작성자명, 작성 내용을 수정수정이 완료된 게시글을 클라이언트로 반환진행 상황1\. 함수를 생성하여 게시글의 id로 게시글 조회2
목표: 마지막으로 게시글 삭제 기능을 구현한다.기존 코드 활용: 게시글 수정(Update) 기능의 코드를 적절히 변경하여 게시글 삭제 기능을 구현할 계획이다.문제 상황: 객체 생성을 통해 게시글을 삭제할지, 다른 방법을 사용할지에 대한 고민이 발생했다.Map 활용: 다
MainController과 MainService 분리 MainService와 MainRepository 분리 MainRepository
MainController 객체 중복 생성 문제 해결 기존에 함수마다 MemoService + levelOneData 객체를 새로 생기는 문제를 해결MainService 객체 중복 생성 문제 해결
new를 통한 Controller -> Service -> Repository 흐름의 제어Spring ( Service -> Controller )Spring ( Repository -> Service ) => 형태로 역전
JpaRepository를 상속해 SimpleJpaRepository 클래스 내의 함수 활용하여 코드 간결화ControllerServiceRepository
Spring Data JPA는 데이터 액세스 계층 작성을 단순화한다. 주로 사용하는 인터페이스 중 하나는 JpaRepository다. 이 인터페이스가 어떻게 동작하는지 알고자 할 때, SimpleJpaRepository에 주목하게 된다. 본 글에서는 두 요소 간의 관계
주제 Query Methods를 활용하여 'contents' 필드에 주어진 키워드가 포함된 메모를 검색하는 API를 개발하십시오.API 세부 사항Controller는 keyword를 쿼리 스트링으로 수신하여 메모 조회 API를 제공합니다.URL 패턴: http:
JWT란 JWT는 JSON 포맷을 이용하여 사용자의 속성을 저장하는 Claim 기반의 Web Token이다. 이는 토큰의 한 종류로 분류된다. 주로 쿠키 저장소에 저장되어 사용된다.JWT는 주로 웹 애플리케이션에서 인증 및 권한 부여 메커니즘으로 사용된다. 서버와 클
함수 정의:validateToken 메서드는 입력된 token의 유효성을 검사하고 그 결과를 boolean 타입으로 반환한다.토큰 검증 절차:Jwts.parserBuilder()를 사용하여 토큰의 유효성 검사를 진행한다. 이 과정에서 key를 서명 키로 설정한다. 그
JWT는 웹 통신에서 사용되는 토큰 형식 중 하나로, 보안적인 목적을 위해 사용자 정보나 권한 등의 정보를 포함할 수 있다. 이러한 정보는 JWT의 구조 내 Payload 부분에 위치하며 parseClaimsJws(token)을 통해 추출가능하다.JWT의 Payload
JWT 토큰은 주로 "Bearer "라는 접두사와 함께 전송되곤 한다. 해당 접두사는 실제 토큰 값과 구분되기 위해 사용되며, 실제 토큰 처리를 위해 이 접두사를 제거해야 할 필요가 있다.업로드중..함수 정의:substringToken 함수는 주어진 tokenValue
JWT 토큰은 주로 "Bearer "라는 접두사와 함께 전송되곤 한다. 해당 접두사는 실제 토큰 값과 구분되기 위해 사용되며, 실제 토큰 처리를 위해 이 접두사를 제거해야 할 필요가 있다.업로드중..함수 정의:substringToken 함수는 주어진 tokenValue
웹 개발 과정에서 웹 서버와 클라이언트 간의 응답 제어는 필수적인 작업이다. Java의 HttpServletResponse 인터페이스는 이러한 HTTP 응답 조작을 가능하게 한다.HttpServletResponse는 Java의 Servlet API 내의 인터페이스로,
Spring의 Filter는 Java Servlet 기반의 애플리케이션에 필수적인 구성 요소로, HTTP 요청과 응답을 효과적으로 관리하기 위한 전처리 및 후처리 역할을 수행한다.Filter는 HTTP 요청을 서버에서 처리하기 전과 후에 동작하는 메커니즘이다. 이를 통
IllegalArgumentException은 Java의 표준 라이브러리에 속한 런타임 예외이다. 이 예외는 부적절한 인수가 메서드에 전달될 때 발생한다.런타임 예외: IllegalArgumentException은 RuntimeException을 상속받으므로 컴파일러는
웹 개발에서 HttpServletRequest와 HttpServletResponse는 중요한 요소이다. 이 두 객체에 대한 기본적인 개념과 특징을 정리하였다.저장 위치: HttpServletRequest 객체는 서버 측에서 처리되는 객체이다. 이 객체는 클라이언트의 요
회원가입 컨트롤러 이미지아래 코드는 회원가입 요청에 대한 응답을 처리하는 컨트롤러의 구현을 보여준다.Spring Boot의 @Controller와 @RestController: 차이점 및 관련 오류 대응User 객체 생성signUp service 이미지UserRepos
로그인 구현 상세게시판에 로그인 기능을 추가하기 위해 아래와 같이 구현하였다.로그인 컨트롤러 이미지로그인 요청을 처리하고 응답하는 컨트롤러는 아래의 Java 코드로 구현되었다.로그인 서비스 이미지로그인 처리를 담당하는 login 서비스는 아래와 같이 Java로 구현하였
1. Logging 필터 구현 Java에서는 웹 애플리케이션에서 요청과 응답을 처리하기 위한 필터를 사용할 수 있다. 이번 포스팅에서는 Logging 필터의 구현 방법을 소개한다. 코드 설명 @Slf4j(topic = "LoggingFilter")는 SLF4J를
필터에서 JWT 토큰에 저장한 유효 객체에서 username과 사용자가 보낸 request Dto( title & contents ) 에서 데이터를 확보하여 C(Create) U(Update) D(Delete)를 구현한다.C(Create)Controller 클라이언트
사용자의 ID(아이디)와 PW(비밀번호)를 검증하기 위한 조건을 정규식으로 설정하고, 해당 조건을 기반으로 입력받은 ID와 PW의 유효성을 검사한다.USERNAME_PATTERN아이디는 소문자 알파벳 및 숫자로 구성되어 있어야 하며, 길이는 4자 이상 10자 이하로 설
회원가입로그인게시글 작성게시글 전부 조회게시글 선택 조회게시글 수정7.게시글 삭제
회원 가입은 Client에서 username과 password를 전달받아 이루어진다.username은 최소 4자 이상, 10자 이하로, 알파벳 소문자(a~z)와 숫자(0~9)로만 구성되어야 한다.password는 최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z
사용자가 Admin으로 로그인 시에 UserService에서 Admin인지 토큰을 확인해 본 후 일치하면 Admin으로 회원을 만들어 준다.
반환 형식에 맞는 Dto 클래스 구현클라이언트 요청 body 형식에 맞게 commentRequestDto 제작
Controller 구현 Service 구현 Test
=>Casecade로 게시판을 삭제시 관련 댓글 한번에 삭제, 댓글 삭제 시에는 댓글만 삭제
authFilterQuestion PrintWriter를 통한 Filter에서의 예외 처리
게시글 클래스에 해당 게시글의 모든 댓글을 저장할 리스트 Memo에 추가Service ( getMemos ) 수정
선택 게시글 목록 조회 선택한 게시글에 등록된 모든 댓글을 선택한 게시글과 같이 Client에 반환하기 댓글은 작성 날짜 기준 내림차순으로 정렬하기 ( API 명세표에는 ID 기준 오름차순 정렬 -> 명세표 우선 ) Test
JPA를 사용하면 데이터베이스 테이블 간의 관계를 Java 객체에 쉽게 매핑할 수 있다. 오늘은 JPA에서 제공하는 어노테이션들인 @OneToMany, @ManyToOne, @JoinColumn에 대해 알아볼 예정이다.@OneToMany는 엔터티 간의 일대다 관계를 표
필터 체인은 HTTP 요청이 애플리케이션에 도착할 때 Spring Security에 의해 순차적으로 실행되는 일련의 필터들을 의미한다.http.addFilterBefore(jwtAuthorizationFilter(), JwtAuthenticationFilter.clas
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)=> @SpringBootApplicationcompanent -> // companent
Spring Security의 활용 범위 내에서, Filter를 이용한 로그인 인증 처리는 꽤 중요한 부분을 차지한다.아래의 코드는 로그인 인증 처리를 위한 필터 추가의 중심이 되는 부분이다.Spring Security의 필터 체인에 사용자 정의 필터를 추가하는 설정
doFilterInternal() setAuthentication() createAuthentication()
attemptAuthentication() successfulAuthentication() unsuccessfulAuthentication()
WebSecurityConfig Init & Field SecurityFilterChain()
Spring Security 구성을 적용하며, 로그인 사용자의 객체 처리 방식이 변화해야 한다.이 방식에서는 HttpServletRequest 객체의 Attribute에서 user 객체를 가져와 사용했다. 하지만 Security Filter의 도입으로 인해 이 방식은
UserDetailImpl UserDetailsServiceImpl
회원 가입 APIClient로부터 username, password 수신규칙: username: 4~10자, 알파벳 소문자 및 숫자password: 8~15자, 알파벳 대소문자 및 숫자중복 username 없을 시: 회원 저장 후 성공 메시지 및 상태코드 반환회원 권한
데이터 베이스 생성 방식 = 표준생성, 엔진 = MySQL템플릿 = 프리티어 ( 과금 방지 )DB 인스턴스 식별자 = springboot-database자격 증명 -> 사용자 이름 및 암호 기입연결 -> 추가 연결 구성 ( 퍼블릭 액세스 기능 활성화, VPC 보안 그룹
Jpa와 Hibernate에서 제공하는 기능으로 특정 엔터티 간의 연관 관계에서 "orphan" 상태가 된 자식 엔터티를 자동으로 삭제하는 기능을 의미한다.Jpa와 Hibernate는 데이터베이스의 데이터를 객체로 다룰 때 사용되는 도구이다. 여기서 '엔터티'라는 단어
Spring과 JPA를 사용할 때, 지연 로딩은 주로 엔터티 간의 관계에서 사용된다. 우리에게 User와 Post 두 개의 엔터티가 있다고 하자. 한 User는 여러 Post를 가질 수 있다.User 엔터티와 Post 엔터티 사이의 관계는 OneToMany와 ManyT
@Controller와 @RestController는 Spring Framework에서 컨트롤러 클래스를 정의하기 위한 주요 어노테이션이다. 두 어노테이션 모두 클라이언트 요청을 처리하고 응답을 반환하는 역할을 수행하지만, 주요 차이점이 있다.기본 개념: Spring
@RequiredArgsConstructor는 Lombok 라이브러리에서 제공하는 어노테이션이다. Lombok은 Java에서 반복되는 코드를 줄이기 위한 도구로, 주로 getter, setter, 생성자 등을 자동으로 생성하는 데 사용된다.자동 생성자 생성@Requir
Spring Framework는 주기적인 작업을 처리하는 데 사용할 수 있는 강력한 스케줄링 기능을 제공한다. @EnableScheduling과 @Scheduled는 이 중심에 있으며, 올바르게 활용될 경우 유용한 자동화된 작업을 수행할 수 있다. 하지만, 올바르게 활
@Configuration은 Spring Framework에서 중요한 역할을 하는 어노테이션 중 하나이다. 이 어노테이션은 주로 Java 기반의 설정 클래스에 적용되어 해당 클래스가 Spring의 설정 정보를 포함하고 있다는 것을 나타낸다.스프링에서는 XML 기반의 설
JPA의 변경 감지는 데이터 변화를 효율적으로 관리해주는 기능이다.1\. 영속성 컨텍스트JPA에서는 '영속성 컨텍스트'라는 특별한 저장 공간을 사용한다. 이곳은 마치 물건을 보관하는 창고와 같다. 이 창고에 있는 물건들은 JPA가 특별히 주의 깊게 관찰하고 있다.2\.
페이징은 웹 어플리케이션에서 자주 사용되는 기능 중 하나이다. 데이터의 양이 많을 경우, 한 번에 모든 데이터를 표시하기보다는 페이지별로 나누어 보여주는 것이 사용자 경험에 더 유리하다. Spring Data JPA는 이런 페이징 처리를 간편하게 도와주는 Page 객체
@OneToMany(mappedBy = "product")는 JPA에서 엔터티 간의 양방향 관계를 설정할 때 사용하는 어노테이션이다. 여기서 mappedBy 속성은 이 관계의 "반대쪽"이 주인임을 나타낸다.mappedBy의 사용은 주로 관계의 주인이 아닌 쪽에서 사용되
URI (Uniform Resource Identifier)웹 자원을 고유하게 식별하거나 이름을 부여할 수 있는 문자열모든 URL은 URI이지만, 모든 URI가 URL은 아니다.URL (Uniform Resource Locator)웹 자원의 특정 위치를 가리키며, 그
RestTemplate과 RequestEntity는 Spring Framework에서 제공하는 클래스로, 웹 서비스와의 HTTP 통신을 돕는 역할을 한다. 이 클래스들을 사용하면 웹 서비스를 호출하거나 응답을 처리하는 작업을 간결하게 할 수 있다RestTemplate은
@Valid는 Java Bean Validation을 이용해서 객체의 유효성을 검사하는 데에 사용하는 어노테이션이다.Spring Framework에서 @Valid 어노테이션을 사용하면 Controller 메서드의 매개변수로 전달되는 객체의 유효성을 검사할 수 있다.@V
06:00 ~ 07:40 : 운동 + 누워서 자기계발 책 리뷰 영상 시청07:40 ~ 08:50 : 수면 ( 잠이 부족했는듯 )08:50 ~ 09:05 : 개인 정비09:05 ~ 10:30 : 11:00 ~ 12:30 : 항해99 시험 예정13:10 ~ 14:40 :
springDoclocalhost:Port/swagger-ui/index.html현재 Swagger 적용 대상 프로그램이 Spring Security Filter를 사용하기에 Localhost:8080에 JWT 토큰 인증 없이는 접근하지 못하였다.따라서 Spring의
Client가 브라우저를 통해 도메인 주소로 요청시 dns 서버를 통해 Amazon Route 53로 전달Route53에서 클라이언트가 요청한 도메인에 대한 ALB(Application Load Balancer) IP 주소 반환호스팅 영역 생성도메인 이름 = 등록한 도
이미지를 참고하여 전체 구현 흐름을 파악한다.와이어 프레임 이미지클라이언트가 브라우저를 통해 도메인 주소로 요청을 할 때, DNS 서버가 이 요청을 Amazon Route 53으로 전달한다. Route 53은 요청한 도메인에 대응하는 ALB(Application Loa
DuckDns를 이용한 웹 서비스 배포AWS EC2 HTTPS문제 상황어제 설정이 꼬인 인스턴스를 발견해결 방법기존 인스턴스를 삭제하고 새로운 인스턴스를 생성하여 배포IP 형태로 배포를 성공적으로 수행인스턴스 배포 스크린샷문제 상황"Let's Encrypt"를 이용하여
직관적이다생성자는 객체 생성을 위한 가장 기본적이고 직관적인 방법이며 클래스에 정의된 속성들을 초기화하는데 사용된다.한정적이다 생성자는 인자의 수와 타입이 고정되어 있기 때문에 일부 선택적인 속성들에 대해 유연성이 떨어질 수 있다.오버로딩을 통한 유연성 여러 생성자를
데이터베이스테스트 중에는 일반적으로 H2와 같은 인메모리 데이터베이스를 사용하여 실제 데이터베이스를 모방한다. 이렇게 하면 테스트 실행 시 실제 데이터베이스에 영향을 미치지 않으면서도 데이터베이스와 상호 작용하는 코드를 테스트할 수 있다.외부 시스템과의 통합테스트 환경
인수 테스트는 소프트웨어가 실제 사용자의 요구 사항과 기대를 충족하는지 확인하는 테스트 과정입이다. 요구 사항 명세사용자의 요구 사항과 기대를 명확히 기술한다.테스트 케이스 설계요구 사항을 기반으로 테스트 케이스를 설계한다.테스트 실행 테스트 케이스를 실행하여 실제 결
Spring 테스트 코드는 Spring 프레임워크를 사용하여 개발된 애플리케이션을 테스트하기 위한 코드를 의미한다. @SpringBootTest이 애너테이션을 사용하면 Spring Boot 애플리케이션의 전체 컨텍스트를 로드하여 실제 환경과 유사한 테스트 환경을 구성할
TDD는 소프트웨어 개발 방법론 중 하나이다.테스트가 개발의 중심을 차지하는 방식이다. TDD 방법론은 테스트 케이스 작성에 중점을 둔 개발 방식으로 개발자가 더 안정적이고 유지보수가 쉬운 코드를 작성하도록 도와준다.Red (빨간색 단계)테스트 작성개발자는 먼저 실패하
테스트 코드는 개발된 소프트웨어가 예상대로 작동하는지 확인하는 코드이다. 특히 Spring 프레임워크에서는 개발 과정을 더 안전하고 효율적으로 만들어 줄 수 있다.SOLID 원칙은 효과적인 객체 지향 프로그래밍을 위한 5가지 설계 원칙이다. 이 원칙들은 시스템을 더욱
목적코드의 특정 작은 부분, 일반적으로는 단일 함수 또는 메소드를 테스트한다.리소스외부 의존성이 없거나 목(mock) 객체를 사용하여 외부 의존성을 제거한다.실행 시간매우 빠르며 수 밀리초 또는 수 초 이내에 실행된다.EX) JUnit, Mockito 등을 사용하여 J
검증 대상테스트 대상 객체의 상태를 검증한다. 객체의 상태는 객체의 속성 또는 반환 값 등을 포함한다.주요 관점테스트 후에 대상 시스템 또는 객체가 예상대로 변경되었는지 확인한다.활용 사례객체가 올바른 값을 반환하는지 예외가 올바르게 발생하는지 등을 검증하는 테스트에서
비욘세 규칙은 테스트 코드 작성에 있어서 특히 중요한 규칙으로 볼 수 있다.비욘세의 노래 가사 "If you liked it, then you should have put a ring on it"에서 영감을 받은 이 규칙은 "If you liked it, then yo
테스트 코드에서 "대역"이라는 용어는 주로 테스트를 위해 실제 객체를 대체하는 객체를 지칭하는데 사용된다. 대역은 테스트의 특정 측면을 집중적으로 검증하거나 테스트가 어려운 부분을 모방하는 역할을 한다. 더미(Dummy)더미 객체는 테스트에 필요하지만 실제로는 사용되지
소프트웨어 개발에서 의존성은 한 클래스, 모듈, 또는 기능이 다른 클래스, 모듈, 또는 기능에 의존하고 있다는 것을 의미한다. 예를 들어 클래스 A가 클래스 B의 메서드를 호출하면 클래스 A는 클래스 B에 의존하게 된다. 이러한 의존성은 코드의 유지 관리를 어렵게 만들
Testability = 테스트 가능성은 소프트웨어의 그 부분이 테스트를 수행하기에 얼마나 적합한지를 나타내는 지표이다.코드의 분리 독립적으로 테스트 가능한 작은 부분으로 코드를 분리한다.단일 책임 원칙 한 모듈은 하나의 책임만 가져야 한다. 이렇게 하면 특정 기능의
Spring 테스트 코드란?인수 테스트와 자동 테스트의 차이SUT란?테스트 하려는 대상BDD란?테스트 중심의 개발 방법론given -> when -> then상호 작용 테스트대상의 함수 구현 호출 없이 그 함수가 어떻게 호출되는지 검증하는 방법상태 검증과 행위 검증비욘
Repository Service Controller
@WithMockUser 어노테이션을 사용하여 테스트 메서드에서 임의의 사용자로 실행할 수 있다. https://sasca37.tistory.com/291Spring Security 테스트 환경에서 UserDetailsImpl 사용문제테스트 코드 실행 시 Cl
Java의 ArrayList 클래스는 equals 메서드를 재정의하여 인스턴스의 내용 기반으로 리스트를 비교한다. 즉 두 ArrayList 객체가 동일한 순서와 동일한 요소를 포함하고 있다면 equals 메서드는 true를 반환한다.list1과 list2는 서로 다른
\--Spring에서 제공하는 @Transactional 어노테이션은 해당 메서드 혹은 클래스가 데이터베이스 트랜잭션의 경계를 정의한다는 것을 나타낸다.이 어노테이션은 메서드 실행 전에 트랜잭션을 시작하고 메서드가 종료될 때 트랜잭션을 커밋(또는 롤백 = TEST)한다
slack -> Incoming WebHooks 추가Incoming WebHooks -> 수신 웹후크 통합 앱 추가웹 후크 URL 복사 및 저장application.properties 파일 설정logback-spring.xml 설정build.gradle 설정
@SpringBootTest는 스프링 부트 애플리케이션의 통합 테스트를 위해 사용된다. 이 어노테이션을 사용하면 스프링 부트 애플리케이션 컨텍스트를 전체적으로 로드하여 테스트할 수 있다.전체 스프링 컨텍스트를 로드한다.모든 계층의 빈(컨트롤러, 서비스, 리포지토리 등)
Spring 프레임워크에서 톰켓 서버는 웹 애플리케이션 서버(WAS)로서 핵심적인 역할을 수행합니다. 톰켓은 Java 기반의 서블릿 컨테이너이며 HTTP 서버로서, 웹 애플리케이션의 중요한 구성 요소로 작동합니다.서블릿 컨테이너: 톰켓은 서블릿과 JSP(JavaServ
Spring 프레임워크를 사용하다 보면 "컨텍스트(context)"와 "컨테이너(container)"라는 용어를 자주 접하게 됩니다. 이 두 개념은 밀접하게 관련되어 있지만, 약간의 차이가 있습니다. 이번 포스팅에서는 이 두 용어의 차이점과 각각의 역할에 대해 자세히
안녕하세요, 오늘은 Apache Tomcat을 이용한 하이브리드 로드 밸런싱에 대해 알아보겠습니다. 웹 애플리케이션의 성능과 가용성을 높이는 이 방법은 Tomcat의 내장 기능과 외부 로드 밸런서를 결합하여 최적의 성능을 제공합니다.하이브리드 로드 밸런싱이란?하이브리드
안녕하세요, 개발자 여러분! 오늘은 Java 프로젝트에서 흔히 발생할 수 있지만 간과하기 쉬운 문제에 대해 이야기해보려고 합니다. 바로 내부 클래스를 제거한 후 배포할 때 발생할 수 있는 이슈입니다. 이 문제를 겪어본 분들은 얼마나 골치 아픈 상황인지 잘 아실 거예요.