본문 바로가기

Java | spring/Spring12

스프링 AOP 기본 개념 잡기! 스프링을 공부하고 서비스를 운영하다 보면 AOP를 적용해야 하는 경우가 생긴다. 핵심 기능은 아니지만, 핵심 기능을 보조하기 위한 부가 기능을 구현해야 하는 경우에 AOP를 사용하게 된다. 기존에 공부하고 사용했던 부분이긴 한데, 오랜만에 강의를 들으면서 공부하니, 정리해 놓으면 좋겠다 싶어서 기본 개념 정리를 해보려 한다. 만약 아래와 같은 고민을 하고 있다면 AOP에 대해 공부해 보면 좋다. 공통적으로 처리해야 하는 로직이 있는데, 중요 관심사는 아니다. 추가 기능을 적용해야할 메서드가 많다. 소스 코드에 핵심 로직이 아닌 불필요 로직이 섞여 있는것이 맘에 들지 않는다. 나는 아래와 같은 요구 사항이 있어서 AOP를 공부하고 실무에 적용한 적이 있다. 관리자 페이지에서 개인정보가 포함된 정보를조회하는.. 2024. 1. 3.
Spring boot 3.2.0 마이그레이션 가이드 (+끝 없는 오류 해결 방법!) 토이 프로젝트 백엔드 서비스의 스프링 부트 버전을 3.2.0 으로 업그레이드를 했다. 기존에 스프링 부트를 2.7 버전을 사용하고 있었기 때문에 버전을 변경하는게 간단할줄 알았는데 아니었다...! 아직 회사에서 사용하는 프로젝트들은 2 버전을 모두 사용하고 있기 때문에 버전을 업하는 경우 똑같은 오류를 볼 수밖에 없어서 이김에 정리하려고 한다. 그리고 생각보다 오류 관련해서 포스팅이 별로 없어서 생각보다 헤매면서 삽질을 했기 때문에 나와 같은 다른 개발자들에게 조금의 삽질이라도 덜어 줄 수 있기를! 스프링 부트 3.0 주요 변경 사항 Java EE에서 Jakarta EE API 로 마이그레이션 예시 - (기존) javax.servlet:javax.servlet-api > (변경) jakarta.servl.. 2023. 12. 21.
스프링 트랜잭션 @Transactional 개념 (+주요 설정값) 스프링에서 트랜잭션을 사용하는 @Transaction 어노테이션을 추가 하게 된다. 일반적으로 DB에서 데이터를 조회, 추가, 수정, 삭제 등을 하는 경우 메소드 상단에 트랜잭션 어노테이션을 붙인다. 보통은 그정도로만 사용해서 상세하게 트랜잭션에 대해 공부해야 한다는 생각을 하지 않는다. 실무에서도 프로젝트에서도 일반적으로 트랜잭션 설정값을 거의 안쓰거나, 보통은 설정값으로 readOnly 정도만 사용하는 경우가 많다. 하지만 대용량 동기화, 배치 등을 진행 할때 트랜잭션 관련 설정을 하게 되는 경우가 있다. 그럼 관련된 설정이나 설명을 봐도 명확하게 이해가 되지 않기도 한다. 또한, 개발자 기술 면접에서도 아래와 같이 질문 하는 경우도 다수 있다. 나도 면접 시에 답변을 한 적이 몇번 있다. 트랜잭션 .. 2021. 6. 4.
알고는 써야지! 기본 spring annotation 종류 스프링을 사용하다 보면 메서드나 클래스, 변수 위에 @ 이 붙은 것들을 보게 된다. 안쓰면 제대로 안 돌아가서 다른 사람 코드를 보고 처음에는 쓰게 되는데 막상 이 annotation이 뭔지 물어보면 대답을 명확하게 하지 못하는 경우도 간혹 있다. 쓸꺼면 알고 쓰자! 사실 면접 볼때 나의 github 소스코드를 보다가 면접관이 이 어노테이션은 뭔지 알고 있냐고 물어본적이 있어서 대충 대답한 기억이 있어서 정리해봤다. 코드를 쓰려면 제대로 알고 써야 저런 당황스러운 경험을 하지 않을 수 있다. 나만 모를수도 있지만 이런게 있구나 하면서 한번 정리하면 좋을 것 같다. 기본중의 기본 어노테이션만 정리해봤다. annotation이란? 사전적 의미로, 주석이라는 뜻이다. @를 이용하여 자바코드에 추가하여 의미를 .. 2021. 5. 17.
Model 2 방식과 스프링 MVC 모델 2 방식은 흔히 MVC 구조를 응용한 방식이라고 하는데, 핵심은 '화면과 데이터 처리를 분리해서 재사용이 가능하도록 하는 구조' 모델 2 패턴의 이해 모델(Model) : 데이터 혹은 데이터를 처리하는 영역 뷰(View) : 결과 화면을 만들어 내는데 사용하는 자원 컨트롤러(Controller) : 웹의 요청(request)을 처리하는 존재로 뷰와 모델 사이의 중간 통신 역할 모델2 에서 모든 요청은 기본적으로 컨트롤러를 호출 / 컨트롤러는 자신을 호출하는 특정한 URI 경로를 가지고 있으며, 과거에는 주로 호출 시에 마지막 확장자를 *.do 등을 이용하는 방식을 많이 사용 모델 2 방식의 장점 개발자와 웹 퍼블리셔의 영역을 분리 가능 컨트롤러의 URL을 통해서 뷰를 제어하기 때문에 뷰의 교체나 변.. 2021. 5. 14.
스프링 MVC의 주요 구성 요소 스프링 MVC의 주요 구성 요소 DispatcherServlet 클라이언트의 요청을 전달받아 컨트롤러에게 클라이언트의 요청을 전달하고 컨트롤러가 리턴한 결과 값을 View에 전달하여 알맞은 응답을 생성하도록 한다. front controller와 동일 클라이언트의 요청을 중앙에서 처리하는 스프링 MVC의 핵심 구성요소 web.xml에 한 개 이상의 DispatcherServlet을 설정 각 DispatcherServlet은 한 개의 WebApplicationContext를 갖게 된다. HandlerMapping 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지를 결정한다. 컨트롤러(Controller) 클라이언트의 요청을 처리한 뒤, 그 그결과를 DispatcherServlet에게 알려준다. 스트럿츠의.. 2021. 5. 14.
Spring에서 JDBC가 아닌 MyBatis를 사용하는 이유 스프링을 활용하여 개발 시 직접 connection을 만들어서 자바 코드에 데이터베이스에 접근하는 형태보다는 Mybatis를 활용하는 경우가 많다. 스프링 + MyBatis + RDBMS의 조합으로 많이 사용한다. 마이바티스를 활용하면 개발이 더 편리 하기 때문이라고 한다. 그 이유에 대해 상세히 알아보자. 코드 효율성 향상 JDBC는 try~catch 처리, Statement, ResultSet의 데이터 처리를 하기 위해 많은 코드를 써야 한다. MyBatis는 SQL Mapper 라이브러리로, 스프링과 함께 사용하는 경우 반복 처리 코드 없이 간결하게 사용이 가능하다. 스프링과 마이바티스를 연계하는 라이브러리를 이용 시 직접 SQL문 호출 없이 자동화 처리가 가능하다. 하여 코드의 양이 줄어든다. S.. 2019. 7. 13.
Spring Mybatis 간단 설명 Spring을 사용하면서 Mybatis를 이용하면DB를 연동하는 것은 기존 방식에 비해 수월하게 할 수 있다. Mybatis를 매뉴얼을 따라 만들다 보면 개념보다는 사용법만 익히게 되니 개념을 정리해 보는 것도 좋다. 국내 대부분 프로젝트는 XML만을 이용해서 SQL문을 작성하고, 별도의 DAO로 만드는 방식을 선호하기 때문에 Mybatis를 XML을 사용해 작성하는 경우가 많다. Mybatis는 무엇인가? ORM(Object Relation Mapping) : 객체와 관계형 데이터 베이스 간의 매핑을 지원하는 것 개발자가 지정한 SQL, 저장프로시저,몇가지 고급 매핑을 지원하는 프레임워크 기존 JDBC를 이용하여 프로그래밍을 하면 소스안에 SQL문을 작성했지만, Mybatis에서는 SQL을 XML 파일.. 2019. 6. 13.
Spring 스프링 특징 : DI / POJO / AOP 스프링의 특징 어플리케이션 프레임워크 경량(Lightweight) 컨테이너 의존성 주입 Dependency Injection(DI)을 통한 객체 간의 관계 구성 Aspect Oriented Programming(AOP) 지원 POJO 기반의 구성 편리한 MVC 구조 WAS에 종속적이지 않은 개발 환경 ㅇ POJO 기반의 구성 내부에는 객체 간의 관계를 구성할 수 있는 특징을 가지고 있음 스프링은 다른 프레임워크들과 달리 이 관계 구성 시 별도의 API 등을 사용하지 않는 POJO(Plain Old Java Object)의 구성만으로 가능하도록 제작되어 있음 일반적인 JAVA 코드를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용 가능 그렇기 때문에 코드를 개발할 때 개발자가 특정한 라이브러리나 컨.. 2019. 5. 10.
반응형