목록공부공부 (33)
이숭간 공부기록

Object Oriented Programming 객체지향 프로그래밍이란,, 너무나도 크고 추상적인 개념이고 또한 매우 중요하다 사실 자바에대한 공부를 하는것도 객체지향적 프로그래밍을 하기 위한것이라고 생각한다. 객체지향 프로그래밍이란 간단하게 말해 현실세계를 컴퓨터로 옮겨서 프로그래밍하는것이라고 생각한다. 현실의 사물을 하나의 객체로보고 공통된 성질을 가지는 객체들을 나타낼수있는 특징을 추상화시켜 하나의 클래스로 만든다. OOP의 4가지 특징 추상화(Abstraction) 구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념(집합)으로 다루는 것 추상화를 이용하면 공통된 특성을 뽑아 하나의 클래스를 정의할 수 있다. 즉 객체지향적 관점에서 클래스를 정의하는것을 추상화라고 할 수 있다. 캡슐화(E..

Wrapper class 프로그램에 따라 기본타입의 데이터를 객체로 취급해야 하는 경우에 자바에서 제공하는 Wrapper class를 이용한다. 예시로, 어떤 메소드의 파라미터가 객체타입만 가능하다면, 기본타입을 그대로 사용할 수 없으므로 래퍼클래스를 한번 거쳐서 객체로 변환후 메소드를 호출해야한다. - 자바에서 제공하는 Wrapper class byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 래퍼클래스는 각각의 타입에 해당하는 데이터를 인수로 전달받아, 해당값을 가지는 객체로 만들어준다. 래퍼클래스는 모두 java.lang패키지에 포함되어 제공된다. 박싱, 언박싱 래퍼클래..
Class ResponseEnitty 응답자체의 독립된 값이나 표현형태로, 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다. 따라서 HttpStatus, HttpHeaders, HttpBody를 포함한다. Spring Framework에서 제공하는 클래스인 HttpEnityt를 상속받으며, RestTemplate(서버와 서버간 통신을 쉽게해줌) 및 @Controller메서드에 사용하고 있다. RestTemplate에서의 사용예 getForEntity()와 exchange() 메서드의 응답객체로도 사용한다. ResponseEntity entity = template.getForEntity("https://example.com", String.class); String body = e..
스프링에서 컨트롤러 테스트하기 Controller테스트는 Service/Repository 테스트에 비해 상대적으로 테스트하기가 까다롭다. 컨트롤러는 사용자의 HTTP Request를 처리하고 HTTP Response를 반환하는 객체이기 때문에 이를 테스트하기 위해서는 웹서버가 동작해야하고 요청과 반환을 담당하는 HttpServeletRequest/HttpServletResponse를 직접 구현해야한다. 하지만 이제는 스프링에서 지원하는 MockMvc를 이용하면 아주 간단하게 URL요청을 GET,POST,PUT, DELETE와 같은 REST형태로 요청을 테스트할수 있다. MockMvc를 주입받는 2가지 방법 1. @SpringBootTest + @AutoConfigureMockMvc 애노테이션 붙이기 @..

Optional Java8부터 Optional클래스를 사용해 NullPointerException(이하 NPE)를 방지할수 있도록 했다. Optional 클래스는 Integer나 Double클래스처럼 T타입의 객체를 포장해주는 래퍼클래스이다. Optional는 null이 올수 있는 값을 감싸는 Wrapper클래스로, 참조하더라도 NPE가 발생하지 않도록 도와준다. 즉, 예상치못한 NPE예외를 제공되는 메소드로 간단히 회피할 수 있어 복잡한 조건문 없이도 null값으로 인해 발생하는 예외를 처리할 수 있다. public final class Optional { // If non-null, the value; if null, indicates no value is present private final T ..
@RequiredArgsConstructor 초기화되지 않은 final필드나, @NonNull이 붙은 필드에 대해 생성자를 생성해준다. 주로 의존성 주입 편의성을 위해 사용된다. 해당 어노테이션으로 의존성주입이 가능한이유는 다음과 같다. - 어떠한 빈에 생성자가 오직 하나만 있고 생성자의 파라미터 타입이 빈으로 등록가능한것이면 이 빈은 @Autowired없이도 의존성주입이 가능 즉, 생성자 안만들고 생성자주입이 가능하다!! @NoArgsConstructor 파라미터가 없는 기본생성자를 생성해준다. 사용시 주의점 1. 필드들이 final로 생성되어있는 경우에는 필드를 초기화할수 없기 때문에 생성자를 만들수 없고 에러가발생 (final키워드가 붙은 필드들은 선언과동시에 초기화하고 이후에 값을 수정할수 없으니..