스프링

AOP란 무엇일까? AOP는 왜 사용할까? AOP를 설명하기전에 상품을 주문을 예시를 들어서 생각해보자 위 사진처럼 3가지의 서비스가 있다고 생각해보자 이 서비스가 실행이 되고나면 로깅을 통해서 로그를 남기는 부가기능을 추가했다. 지금은 비지니스 로직이 3개이기 때문에 별거 아닐수 있다고 생각할수있다. 하지만 만약에 상품 주문에 관해 서비스가 100개라고 생각해보자 그럼 부가기능인 로깅도 100개가 될수있다. 같은 기능을 하는 동일안 코드가 로직안에 무려 100개나 중복되어 있는것이다. 만약 코드에 문제가있어 수정을 하게된다면 어떻까? 100개 코드를 수정해야 한다. 만약에 수정 중에 오타를 작성하거나 1개의 코드를 수정하지 못했다면 대참사가 발생할수있다. 그러면 어떻게 할까..? 부가기능을 따로 빼서 ..
트랜잭션(Transaction) 정의 데이터베이스서 수행되는 작업의 단위를 말한다. 이는 "원자성(Atomicity)",일관성(Consistency)","고립성(lsolation)", "지속성(Durability)"을 준수하는 작업의 단위다. 원자성(Atomicity) : 전부 실행되거나 전부 실행되지 않는다. 일관성(Consistency): 데이터베이스가 트랜잭션이 실행이 되더 라도 항상 일관된 상태를 유지하는 것 고립성(lsolation) : 동시에 여러 트랜잭션이 실행 되더라고 서로가 영향을 미치지않고 독립적으로 실행되는것 지속성(Durability): 트랜잭션이 성공적으로 완료되면 결과가 영구적으로 저정되는 것 트랜잭션 전파 트랜잭션 전파란 트랜잭션의 경계에서 이미 진행중인 트랜잭션이 있을때 또는..
서비스 추상화 서비스 추상화란 어떤 기능이나 상위기준에서 이해하고 다루기 위해서 세부 사항을 숨기고 추상화하는 것을 말한다. 즉 복잡한 시스템을 관리하기 쉽고 이해하기 쉽게 만들기 위함이다. 단 이몇줄로 이해하기 힘들 것이다. 간단한 코드를 통해서 어떤 식으로 추상화를 사용하는지 알아보자 예시 간단한 카페 등급을 예시를 들어서 생각해보자 카페 등급에는 총 3단계로 이뤄저 있다. 초급 단계 : 카페 가입시 기본등급 중급 단계 : 게시글 작성 3회 이상, 로그인 횟수 10회 이상 고급 단계 : 게시글 작성 10회 이상. 로그인 횟수 20회 이상 이 조건을 만족해야만 해당 등급으로 변경된다. 이런 기능을 추가할때는 DAO에다가 기능을 적용할 수도 있다. 하지만 스프링이 추구하는 "역할과 책임"을 위배하는 코드..
Exception 예외 종류 Error java.lang.Error 클래스의 서브 클래스이다. 에러는 시스템에 뭔가 비정상적인 상황이 발생했을때 사용된다. 체크 예외와 언체크 예외 Exception java.lang.Exception 클래스와 그 서브 클래스로 정의되는 예외들은 에러와 달리 개발자가 작업중에 코드에 예외상황이 발생했을때 사용된다. 체크예외 컴파일에러 복구불가능한 에러 RuntimeException만 상속받지않은 예외 RuntimeException java.lang.RuntimeException 클래스를 상속한 예외들은 명시적인 예외처리를 강제하기 때문에 언체크 예외라고 불린다. 런타임 예외 개발자가 부주의해서 발생할 수 있는 경우에 발생하도록 만든 예외 catch나 throws를 사용하지..
오브젝트 및 의존관계 들어가며 토비 님의 토비스프링 책을 참고하여 작성했으며, gradle로 파일을 설정하며 lombok 등의 플로그인을 사용하여 코드를 단순화했습니다. 오브젝트 오브젝트란 자바(Java)에서 "오브젝트"는 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 개념에 기반한 핵심 요소입니다. 객체 지향 프로그래밍은 현실 세계의 사물을 모델링하고 이를 소프트웨어로 구현하는 개념입니다. 스프링을 이해하려면 일단 오브젝트에 대해서 관심을 두어야한다. 애플리케이션에서 오브젝트가 어떻게 생성되며, 어떤 관계 맺고 사용되고 소멸되기까지 전 과정을 이해해야 하는 것이 중요하다. 결국 오브젝트를 의 설계 방향으로 발전했다. 객체지향 설계의 기초를 비롯해서이다.(재활용과, 더..
상품등록을 위한 엔티티 설계 및 등록하기 들어가며 이번포스팅에서는 상품을 등록하는 기능을 개발해 보겠습니다. (도서 판매 페이지를 기준으로 개발) 엔티티 설계 사용자가 상품을 등록할때에는 여러 개의 상품을 등록할 수 있으며, 상품은 사용자의 한 명으로만 매핑되도록 설계했으며 아이템엔티티는 상속을 통해서 Book을 설계하도록 했습니다. 엔티티 작성 Member @OneToMany(mappedBy = "member") private List items = new ArrayList(); 일대다 관계 매핑을 위해서 Member 에다가 위에 코드를 추가한다. Item @Entity @Getter@Setter public abstract class Item { @Id@GeneratedValue private Lon..
세션을 사용하여 로그인(아이디 기억하기) 및 로그아웃하기 들어가며 이번 포스팅에서는 세션을 사용하여 로그인상태를 유지하고 사용자권한별로 접속하는 페이지가 다르게 하며 로그아웃하는 기능을 개발해 보겠습니다. Repository 이번 로그인에서도 JpaRepositroy를 사용하지 않고 직접 개발하여 사용하도록 하겠습니다 Reposiotry를 인터페이스로 만들어 오버라이딩하여 사용하도록 하겠습니다. LoginRepository public interface LoginRepository { List findById(String id); List findBPwd(String pwd); } findById(String id) : 객체에서 아이디값을 찾는 메서드 findByPwd(String pwd) : 객체에서 ..
로그인 페이지 레이아웃 구성 들어가며 이전 포스팅까지는 회원가입을 하는기능을 개발해봤습니다. 이제부터는 회원가입한 데이터값을 이용해서 로그인 기능을 개발해볼 예정입니다. 이번 포스팅에서는 로그인 페이지의 레이아웃 부터 구성해보겠습니다. 예상 로그인 페이지 간단한 기능이 있는 로그인 페이지 HTML 기존에 만들었던 header.html 에서 href 부분에 "/login"을 추가한다. | 로그인 templates/ 하위에 login폴더 생성후 loginPage.html 생성 bootstrap을 사용할 예정이라 css파일에다가 bootstrap다운받은후에 bootstrap.min.css 파일을 넣어줘야합니다. loginPage.html 책방 Id Password Remember Id Sign in 아이디 찾..
코드기록사
'스프링' 태그의 글 목록