분류 전체보기

스프링

[Spring] Spring without Spring Boot

스프링부트로 스프링을 접해서 몰랐는데 레거시 스프링을 접하게 되면서 정말 스프링부트는 미쳤다는 걸 체감하고 있다. 서블렛 컨테이너 등록 VS 내장 서블렛 컨테이너 레거시는 별도의 서블렛 컨테이너(웹 애플리케이션 서버)를 미리 준비하고 그 위에 스프링 프로젝트를 올린다. 이후 빌드할 때도 war파일을 서블렛 컨테이너에 올려야 한다. 스프링부트는 기본적으로 서블렛 컨테이너가 내장되어 있어 별도의 서버 설치 없이 실행할 수 있다. 빌드시에도 jar 파일만으로 배포할 수 있다. web.xml spring legacy 프로젝트 생성시 자동으로 생성되긴 하지만 web.xml에 ContextLoaderListener를 통해 Dispatcher Servlet을 서블렛 컨테이너(톰캣)에 올리는 것을 명시한다. POST ..

스프링

[Spring]Spring AOP? AspectJ를 사용하는 이유

AOP( Aspect-Oriented Programming) 객체지향 프로그래밍은 클래스가 단일 책임원칙을 가지도록 설계해 응집도를 높이고 결합도는 낮춘다. 하지만 클래스의 비즈니스 로직을 제외한 로깅, 트랜잭션과 같은 부가기능 여러 클래스에 중복적으로 필요한 기능이 존재한다. 이런 경우 AOP를 통해 코드의 중복성을 낮추고, 부가기능의 응집도를 높혀 관리할 수 있다. AOP 적용할만한 것들 메소드 성능검사 DB와 엮인 대량의 데이터의 조회 쿼리 시간을 측정하는 등의 비즈니스 로직 호출의 앞뒤로 시간을 체크해 성능검사에 AOP를 적용할 수 있다. 트랜잭션 처리 성능검사와 마찬가지로 비즈니스 로직의 전후에 설정되는 번거로운 try catch 대신 AOP를 적용할 수 있다. Spring AOP Target ..

스프링

[Spring] 의존성 주입의 종류

Spring IoC Container가 Bean을 관리할 때는 객체관리 뿐아니라 객체 내에 필요한 객체를 의존성 주입으로 해결한다. 의존성 주입은 필요한 객체를 생성하는 것이 아닌 외부로 부터 객체를 받아 사용하는 것이다. 관련 작성 포스팅 의존성 주입은 왜 필요한가? 스프링은 @Autowired 어노테이션을 이용한 다양한 의존성 주입 방법을 제공하는데 종류는 생성자, 수정자, 필드로 나뉜다. 필드주입 1. 코드가 간결하다. 2. 외부에서 변경이 불가능해 테스트시 모킹이 필요하다 3. 스프링 컨테이너 없이 의존성 주입이 힘들다 4. 객체가 생성된 이후에 주입하므로 final 키워드를 사용할 수 없어 해당 객체의 불변을 보장하지 못한다 @Service public class ProductService { ..

스프링

Spring Security 5.8 config requestMatchers

오랜만에 스프링 시큐리티 설정을 건드리는데 원래 쓰던 mvcMatchers 메소드가 가버렸다. Spring Security 5.8부터 antMatchers, mvcMatchers, and regexMatchers 가 deprecated되고 6부터는 사라질 예정이다. 위의 메소드 대신 새롭게 사용될 requestMatchers 메소드는 authorizeHttpRequests, authorizeRequests, CSRF configuration, WebSecurityCustomizer와 RequstMatcher 메서드가 있는 위치에 추가되었다. requestMatchers는 애플리케이션의 클래스 경로에 Spring MVC가 있는 경우 mvcRequestMatcher 구현을 선택하고 없는 경우 AntPathR..

회고

[SSAFY] 전공자 10기 합격 후기

SSAFY 면접 내용이나 코딩테스트 내용은 공유가 불가능합니다 스펙 국립 지방대 컴공 졸업(학점 3.96/4.5) 교내 코딩테스트 수상경험 1회 웹 개발 관련 프로젝트 2회 정보처리기사 볼 품이 없습니다 .. ㅋㅋ 에세이 500 ~ 600자가 그렇게 많지 않습니다. 경험과 동기를 적어야하는데 경험과 그에 따른 동기를 명확하게 적으시면 될 것 같습니다. 첨삭 안받고 나름 잘썼다고 내고 면접 스터디를 하면서 후회 많이했습니다. 오픈채팅방이나 주변사람들에게 부끄러워도 철판깔고 첨삭받는 걸 추천드립니다. 코딩테스트 백준 기준 실버를 쉽게 풀 수 있다면 어렵지 않을 겁니다. 평소에 프로그래머스만 풀어보셨다면 아래의 싸피 권장 문제 풀이 사이트에서 2 ~ 3 레벨 문제를 풀어보시면 도움이 될 것 같습니다. http..

JPA

[JPA] 양방향 연관관계와 단방향 연관관계

SQLMapper를 대충 경험하고 JPA를 시작해서 요즘 들어깨닫는게 많다. N+1 문제가 발생하는 원인과 해결하는 법을 알았는데 그 이전에 JPA를 SQLMapper처럼 사용할줄 알고(단방향 연관관계 사용) 필요할 때 양방향 연관관계를 사용해야한다는 걸 알았고 정리하려고 글을 쓴다. JPA 단방향 연관관계 DB설계에서 글과 댓글은 1:N의 관계를 갖는다. 이때 댓글은 글의 id를 외래키로 가진다. 그럼 예시와 같은 글과 댓글의 화면을 렌더링 해주려면 해당 글과 해당 글의 댓글을 가져와야한다. 글은 View 렌더링으로, 댓글은 Ajax로 해당 글의 id를 통해 비동기로 가져오는 서비스의 흐름을 가진다면 Entity @Entity @Getter @NoArgsConstructor @AllArgsConstru..

회고

5월 회고

항상 흘러가면 흘러가는 대로 살아왔지만 취준생으로서 내가 한달동안 어떻게 살았는지 꼼꼼히 되돌아보고 앞으로 미래를 설계하기 위해서 달단위 회고를 해보려 한다. 잔디깎이범 퇴출 대학생 때는 학생 방패라도 있었지 지금은 아니다. 내 안의 잔디깎이범을 몰아냈다. 이 과정에서 쓸데없는 알고리즘 한문제씩을 올리는 기염을 토하기도 했지만 5월 말의 공백 한칸은 정말 공부한 것만 올리자는 마음가짐을 먹은 날이였다. 열심히 살자;; 백기선님 웹 애플리케이션 강의 수강 나름 이전의 댓글 필터링 커뮤니티 프로젝트를 통해 스프링 MVC, 스프링 시큐리티, JPA를 헤딩하면서 나름 늘었다고 생각했었다. 하지만 구글링으로 막히면 해결하던 퀄리티와 달리 내가 고민했던 부분에 대한 베스트 프렉티스가 거의 이 강의에 담겨있다고 느꼈..

개발로그

[개발로그] QueryDSL 사용 후기

연관관계 맵핑 이후 조회 쿼리 시 생각해야할 것 N+1, Fetch Join, JPQL @Query 사용 후기 QueyrDSL? JPA를 쓰면서 내가 가져오고 싶은 객체에 연관된 객체 자체를 한번의 쿼리에 모두 담아오고 싶을 때는 JPQL +Fetch Join 이나 EntitiyGraph를 통해 가져올 수 있다. 하지만 Spirng Data JPA만 사용해서는 조건에 맞는 연관된 객체를 찾기엔 JPQL문 자체가 길어지고, 오타 혹은 문법적인 오류를 포함할 가능성이 높아지고, 이후 엔티티 변경 시에도 JPQL도 영향을 받을 확률이 있다. QueryDSL 이런 문제를 해결해주는 QueryDSL은 정적 타입을 이용해서 쿼리를 생성해주는 프레임워크이다. 장점으로는 코드로 쿼리를 작성하기에 컴파일 시점에 문법 오..

비오베베
'분류 전체보기' 카테고리의 글 목록 (5 Page)