자바22 [Java] 동일성(identity)과 동등성(equality) 팀원들과 면접 스터디를 진행중인데, 한번쯤 정리하면 좋은 내용이라 생각되어 정리해본다. 1. 동일성(identity) 우선 다음 그림을 살펴보자. 변수 1은 객체1을 가리키고 있고, 변수2 와 변수3은 객체2를 가리키고 있다. 즉, 변수2 와 변수3은 동일한 객체를 가리키고 있으므로, 두 변수는 동일하다고 이야기할 수 있다. 그리고 해당 변수가 동일한지 == 연산자를 통해 판별할 수 있다. 참고로 Primitive 타입은 주소가 없으므로 == 연산자를 사용하였을 때 내용이 같으면 동일하다고 판단한다. 2. 동등성 (equality) 두 개의 객체가 같은 정보를 갖고 있는 경우 동등하다고 판단한다. 즉, 참조하고 있는 객체의 주소가 서로 다르더라도 내용만 같으면 두 변수는 동등하다고 말할 수 있다. Jav.. BackEnd/Java 2022. 9. 6. [Spring] 예외 처리와 오류 페이지 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 서블릿 예외 처리 - 시작 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 서블릿은 2가지 방식으로 예외 처리를 지원해 준다. 1) Exception 2) response.sendError(HTTP 상태 코드, 오류 메시지) 웹 어플리케이션 에서는 사용자 요청별로 thread가 할당된다. 해당 thread에서 예외가 발생했는데, try - catch로 예외를 처리하지 못한다면 어떻게 될까? => 톰캣 같은 WAS 까지 예외가 전달된다. WAS(여기까지 전파) HTML 삽입 미리보기할 수 없는 소스 예외가 WAS까지 전달되면 WAS는 예외를 처리하는 오.. BackEnd/Spring MVC 2022. 3. 14. [JDBC] DAO 리팩토링 3 - DbTemplate 리팩토링 이전글을 기반으로 하는 리팩토링 기록 입니다. [JDBC] DAO 리팩토링 2 - 하나의 Template 으로 이동 다음과 같이 하나의 Template 안에 기존의 코드들을 전부 모아두었다. 기존 코드는 직전 글에서 설명했었다. [JDBC] DAO 리팩토링 1 - 개별 Template 만들기 이전 글의 코드를 리팩토링 한 과정입니다. 변 blogshine.tistory.com 1. DbTemplate 리팩토링 하기 기존 DbTemplate이 update 메서드는 다음과 같다. public Long executeUpdate(String sql, PreparedStatementSetter pss) { Connection connection = null; PreparedStatement pstmt = null.. BackEnd/JDBC 2022. 3. 13. [Spring] 검증1 - Validation - 4 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 10. 오류 코드와 메시지 처리 5 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 ● 핵심은 구체적인 것 을 먼저 사용하고, 덜 구체적일수록 나중에 사용한다. MessageCodesResolver 는 required.item.itemName 처럼 구체적인 것을 먼저 만들어주고, required 처럼 덜 구체적인 것을 가장 나중에 만든다. 그럼 왜 이런식으로 오류코드를 만들까? 모든 오류코드에 대하여 메시지를 전부 다 만들기는 힘들다. 일반적이면서 중요하지 않은 메시지는 범용적인 오류 코드인 required 와 같이 사용하고, 정말 중요한 내용은 필요할때 .. BackEnd/Spring MVC 2022. 3. 6. [Spring] 검증1 - Validation - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 검증 직접 처리 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 그리고 정상 로직보다 이런 검증 로직을 잘 개발하는 것이 어쩌면 더 어려울 수 있다. 우선 상품 저장이 검증 실패되는 경우를 그림으로 살펴봅시다. 고객이 폼에 입력한 값이 지정된 범위를 넘어가거나, 또는 너무 작은경우 서버에서 검증 로직이 실패해야 한다. 이렇게 검증에 실패한 경우 고객이 보냈던 실패한 데이터를 Model에 저장하여 다시 반환함으로써 어떤 값을 잘못 입력했는지를 알려줘야 한다 만약 검증이 .. BackEnd/Spring MVC 2022. 3. 5. [Spring] 메시지, 국제화 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 스프링 메시지 소스 설정 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링은 기본적으로 메시지 관리 기능을 제공한다. 메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource를 스프링 빈으로 등록하면 되는데, MessageSource는 인터페이스다. 따라서 구현체인 ResourceBundleMessageSource 를 스프링 빈으로 등록하면 된다. 직접 등록하는 방식을 코드로 살펴보자. @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageS.. BackEnd/Spring MVC 2022. 3. 5. [Spring] 스프링 MVC - 기본 기능 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 요청 매핑 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 ● MappingController @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); /** * 기본 요청 * 둘다 허용 /hello-basic, /hello-basic/ * HTTP 메서드 모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE */ @RequestMapping("/hello-basic") public String h.. BackEnd/Spring MVC 2022. 2. 26. [Spring] 서블릿, JSP, MVC 패턴 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 회원 관리 웹 애플리케이션 요구사항 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 간단하게 회원의 정보를 저장하고, 목록으로 조회하는 로직을 구현해볼 것 이다. ● 회원 정보 - 이름 : name - 나이 : age ● 기능 요구사항 - 회원 저장 - 회원 목록 조회 우선 회원의 도메인 모델부터 만들어 보자. package hello.servlet.domain.member; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Member { private Long id; .. BackEnd/Spring MVC 2022. 2. 17. [Spring] 서블릿 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. Hello 서블릿 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 톰켓을 직접 설치하는 대신에 SpringBoot를 이용하여 내장 톰켓을 사용할 것 이다. ● 스프링 부트 서블릿 환경 구성하기 @ServletComponentScan 를 추가하면 스프링 부트가 서블릿을 직접 등록해서 사용할수 있도록 도와준다. @ServletComponentScan //서블릿 자동 등록 @SpringBootApplication public class ServletApplication { public static void main(String[] args) { Spring.. BackEnd/Spring MVC 2022. 2. 13. [Spring] 의존관계 자동 주입 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 옵션 처리 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번시간에는 옵션처리를 공부하였다. 이는 주입할 스프링 빈이 없을때도 동작하도록 하는 과정이였다. 기본적으로 @Autowired는 required = true 이기 때문에 자동 주입대상이 없으면 오류가 발생한다. 3가지 방식으로 처리가 가능했다. 1) @Autowired(required = false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안되는 방식 2) org.springframework.lang.@Nullable : 자동 주입할 대상이 없으면 null이 입력된다. 3).. BackEnd/Spring 2022. 2. 5. [Spring] 싱글톤 컨테이너 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 싱글톤 컨테이너 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 컨테이너는 싱글톤 패턴을 적용하지 않아도 객체 인스턴스를 싱글톤으로 관리한다. 이렇게 싱글톤 객체를 생성하고 관리하는 기능을 싱글톤 레지스트리 라고 한다. 이러한 기능 덕에 싱글톤을 위한 지저분한 코드가 들어갈 필요도 없으며, DIP, OCP, 테스트 등 의 제약사항이 없어진다 할 수 있다! 간단한 테스트 하나 해보자~ @Test @DisplayName("스프링 컨테이너와 싱글톤") void springContainer(){ ApplicationContext ac = ne.. BackEnd/Spring 2022. 2. 3. [서평] 명품 JAVA Programming 저의 돈으로 직접사서 직접 완독해본후 써보는 후기입니다. 따라서 장점은 장점대로 칭찬할것이며, 단점은 단점대로 언급할 것 입니다. 명품 JAVA Programming 저자 : 황기태, 김효수 출판 : 생능출판사 발매 : 2018.06.01. 2021/7/27 ~ 2021/08/04 1) 책의 표지 2) 단원별 구성 3) 읽은소감 우선 저의 글의 앞부분만 보는 분들을 위해 먼저 간단히 3가지에 대해 답해보겠습니다. Q 이 책을 읽기 전에 필요한 수준/ 지식은? => 이책은 기본 이론서 이다. 사전 지식이 필요하지 않다. 프로그래밍을 처음 접하는 이들에게 권해주고 싶은 책 이다. 또한 최신 java의 내용을 포함하려 노력하신것 같다. Q 이 책을 읽어야 할 필요성, 어디에 도움이 될까? => 자바.. Life/Book Record 2022. 1. 27. 이전 1 2 다음