spring boot 15

메시지, 국제화

메시지란? 만약 상품명이라는 라벨을 상품이름으로 변경하자는 요구사항이 들어왔다고 가정해보자. 이를 위해선 상품명이라고 코딩되어 있는 모든 부분을 찾아서 상품이름으로 고쳐야할 것이다. HTML 파일에 메세지가 하드코딩되어 있기 때문이다. 이런 다양한 메시지를 한 곳에서 관리하는 기능을 메시지 기능이라고 한다. "message.properties"라는 메세지 관리용 파일을 만들어 사용하는 것이다.(key-value) item=상품 item.id=상품 ID item.itemName=상품명 item.price=가격 item.quantity=수량 각 HTML은 key값으로 value를 불러와 사용하면 된다. 물론 하드코딩된 현재 상태에서는 모두 찾아고쳐야 하지만 추후에 비슷한 요구사항이 들어왔을 때에는 메시지 관..

Spring/Spring MVC 2021.07.06

로그인한 사용자 정보 받아오기

Spring Security를 사용하여 로그인, 로그아웃을 구현해놓았다. 또한 회원 가입시에 Spring Security를 통해서 비밀번호를 암호화하여 저장하도록 하였다. 초기버전에서의 새로운 게시물 작성은 Member 엔티티를 추가하기 이전이였기 때문에 작성자를 직접 입력하는 식으로 구현되었다. 하지만 현재 Member 엔티티를 추가하여 로그인, 로그아웃을 구현해놓은 상태이기 때문에 Authentication 객체를 사용하여 세션 정보를 가져와 작성자를 고정시키는 방식으로 변경하였다. 게시물을 작성하면 세션 정보를 가져와 작성자는 disabled Authentication를 파라미터로 받아 위와 같이 사용하였다. 스프링 시큐리티를 처음 사용해보았는데 굉장히 성숙도가 높은 부분인 것 같아 추후에 따로 공..

빈 생명주기 콜백을 지원하는 3가지 방법

1. 인터페이스 InitializingBean, DisposableBean 앞서 만든 NetworkClient 클래스를 InitializingBean과 DisposableBean의 구현체로써 구현해보자. InitializingBean의 구현메서드 afterPropertiesSet은 객체를 생성하고 의존관계 주입이 끝나면 호출되는 메서드이다. DisposableBean의 구현메서드 destroy는 스프링 컨테이너가 close될 때 스프링 빈들이 하나씩 소멸되면서 호출된다. 따라서 안전하게 연결을 종료할 수 있도록 해준다. 이제 테스트를 다시 실행해보자. 객체 생성 후 초기화 메서드(afterPropertiesSet)과 소멸 전 destory메서드를 확인할 수 있다. 하지만 초기화, 소멸 인터페이스에는 단점..

Spring/Spring Core 2021.03.24

조회하는 빈이 2개 이상 😱😱

@Autowired는 타입으로 조회한다. 타입으로 조회하게 되면 선택된 빈이 2개 이상일 때 문제가 발생한다. DiscountPolicy의 구체인 FixDiscountPolicy와 RateDiscountPolicy 둘 다 스프링 빈으로 등록시키고 DiscountPolicy타입으로 조회를 하면 Exception이 발생한다. 하위 타입으로 지정할 수도 있지만, 하위 타입으로 지정하는 것은 DIP를 위배하고 유연성이 떨어진다. 그리고 이름만 다르고, 완전히 똑같은 타입의 스프링 빈이 2개 있을 때 해결이 안된다. @Autowired 필드 명 매칭 @Autowired는 타입 매칭을 시도하고, 이때 여러 빈이 있으면 필드 이름 / 파라미터 이름으로 빈 이름을 추가 매칭한다. 위와 같이 파라미터이름을 보고 같은 타..

Spring/Spring Core 2021.03.19
반응형