DI 방식, FIlter / Interceptor / AOP
·
스파르타 기술면접
>>DI의 방식 중 필드 vs 생성자 주입 방식 💡 DI는 객체간의 결합도를 줄여 의존관계를 느슨하게! →유연한 대처가 가능 DI의 방식 필드 주입 의존성을 나타내는 필드에 @Autowired어노테이션을 사용해서 주입 코드 작성이 간결 오류를 찾기 어렵고 의존성 주입의 순서를 보장하기 어려움 생성자 주입 의존성을 주입하는 생성자를 정의하고, @Autowired 어노테이션을 사용하여 의존성을 주입 오류를 찾을 수 있고, 의존성 주입의 순서를 보장 생성자를 통한 필수 의존성을 전달하므로, 의존성 누락에 대한 예방 가능 권장되는 방법(불변성 확보, 테코 작성, final 키워드 작성 및 lombok과 결합, 순환참조 에러 발생 방지(스프링 2.6미만)) 예시 필드 주입 & 생성자 주입 //필드 주입 publi..
MSA , 제네릭(3일차)
·
스파르타 기술면접
MSA(Microservice Architecture)란? 💡 **MSA(Microservice Architecture)**란 소프트웨어 시스템을 작고 독립적인 서비스 단위로 나누어 구축하는 아키텍처 디자인 패턴입니다. 각각의 서비스는 자체적인 데이터베이스를 가지고 있으며, 독립적으로 배포, 확장, 개발될 수 있습니다. 또한, 서비스 간 통신은 경량화된 프로토콜을 사용하고, RESTful API를 통해 이루어지기 때문에, 더욱 높은 유연성과 확장성을 제공할 수 있습니다. 장점 더 나은 확장성 각각의 서비스가 독립적으로 배포 및 확장이 가능 높은 유연성 독립적 → 다른 서비스에 영향 없이 필요에 따라 개발 및 수정이 가능 생산성 증가 각각의 서비스가 작고, 독립적으로 개발 → 개발 생산성과 테스트 생산성이..
DI , DB에서의 인덱스 사용(2일차)
·
스파르타 기술면접
DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명해주세요. 💡 DI란? 객체간 의존성을 명시적으로 정의하고, 객체간의 결합도를 줄이기 위한 디자인 패턴 객체를 생성하고 관리하는 코드에서 객체 간 의존성을 외부에서 주입하는 방식으로 작성할 수 있다. 내부 생성을 하는 것은 무엇? → 개발자? ㄴㄴ 스프링(IOC : 제어의 역전) →코드의 재사용성과 유지보수성이 높아지며, 객체 간 의존성이 줄어들어 유연성과 확장성이 높아진다. 방법 3가지 생성자를 통한 의존성 주입(권장) 프로퍼티를 통한 의존성 주입 인테페이스를 통한 의존성 주입(추상화 개념 → 완벽하게 분리되서 결합도를 낮출 수 있다.) 장점 유연한 코드 작성 가능 DI를 이용하면 객체 간의 결합도를 낮출 수 있으므..
객체지향 프로그래밍(OOP) , REST API(1일차)
·
스파르타 기술면접
객체지향 프로그래밍(OOP)에 대해 설명해 주세요. 알고있는 원칙이나 키워드를 언급해주세요 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그램을 객체들의 모임으로 바라보고, 객체 간의 상호작용을 통해 프로그래밍하는 방식입니다. OOP의 핵심 특징 캡슐화(Encapsulation) 데이터와 메서드를 하나의 클래스 안에 묶어 캡슐화하고, 외부에서의 접근을 제한합니다. 이는 데이터를 보호하고, 더 나은 모듈화를 가능하게 하여 유지보수성을 향상시키는데 도움을 줍니다. 상속(Inheritance) 부모 클래스에서 정의된 속성과 메서드를 자식 클래스에서 상속받아 재사용할 수 있습니다. 이는 코드의 중복을 제거하고, 코드 재사용성을 높이는..
[내일배움캠프_Spring] 자바 Spring 입문_동시성 처리_230304
·
스파르타 부트캠프(spring)
참여 인원 수 만큼 Enrollment의 status를 TRUE로 업데이트 하는 경우, 동시에 여러 사용자가 동시에 참여 신청을 한다면, 여러 개의 Enrollment이 동시에 생성되고 업데이트되어 데이터 불일치 문제가 발생할 수 있습니다. 이를 해결하기 위해서는 동시성 문제를 처리해주는 메커니즘이 필요합니다. 여러 가지 방법이 있지만, 일반적으로 다음과 같은 방법을 사용합니다. Optimistic Locking Optimistic Locking은 동시성 문제를 처리하는 방법 중 하나입니다. 이 방법은 여러 개의 사용자가 동시에 같은 데이터를 수정하려고 할 때, 데이터에 버전 정보를 추가해서 충돌을 감지하는 방법입니다. 만약 버전 정보가 일치하지 않는 경우, 충돌이 발생한 것으로 판단하여 다시 시도하도록..
[내일배움캠프_Spring] 자바 Spring 최종 프로젝트 _@Column 트러블 슈팅_230303
·
카테고리 없음
연관 관계 트러블 슈팅 전체 신청내역 조회를 만들어 놓았다. 게시글 별로 리스트를 가져오고 싶기 때문에 postId 를 사용해서 값을 뽑아와야한다. 하지만 postId를 불러오면 column postId가 null이라는 에러가 생성된다. entity에 @Column 을 사용해서 postId를 주입했더니 위에서 @ManyToOne으로 연관관계를 맺어 준 post의 이름으로 지정해 준 post_id와 겹치는 것 같다. 그래서 @Column postId의 이름을 똑같은 이름으로 지정해주었는데, 이번에는 Duplicated 되었다는 에러가 발생하였다. @Column의 insertable, updatable 속성 값을 false로 변경하여, 에러 해결할 수 있었다. insertable 속성 엔티티 저장시, 해당 ..
트러블
·
카테고리 없음
이런 테스트코드를 짰지만, url 주소나 userRoleEnum을 확인하지 않고 그냥 생성이 되는지만 확인되는 깡통 테스트코드이다.
[내일배움캠프_Spring] 자바 Spring 입문_SSR,CSR_230224
·
스파르타 부트캠프(spring)
SSR과 CSR은 모두 웹 애플리케이션에서 사용되는 프론트엔드 렌더링 방식입니다. SSR(Server-Side Rendering) 서버 측 렌더링은 서버에서 HTML 마크업을 생성하는 방식입니다. 이 방식은 페이지 로드 시 서버에서 필요한 모든 데이터와 HTML 마크업을 가져와 브라우저에 보낸 후 클라이언트에서 JavaScript 및 CSS를 로드하여 렌더링하는 방식입니다. 이렇게 하면 초기 로드 속도가 빠르고 검색 엔진 최적화(SEO)에 유리합니다. CSR(Client-Side Rendering) 클라이언트 측 렌더링은 브라우저에서 JavaScript를 사용하여 HTML 마크업을 동적으로 생성하는 방식입니다. 이 방식은 초기 로드 속도가 느리고 검색 엔진 최적화(SEO)에 취약하지만, 사용자 인터랙션에..