스프링에서 컨트롤러로 지정해주기 위한 어노테이션에는 @Controller와 @RestController가 있다. 전통적인 Spring MVC의 컨트롤러인 @Controller와 Restful 웹 서비스의 컨트롤러인 @RestController의 주요 차이점은 HTTP ResponseBody가 생성되는 방식이다. Spring MVC Controller - @Controller Controller - View 주로 View를 반환하기 위해 사용, Client의 요청으로부터 View를 반환한다. 1. Client는 URI로 웹 서비스에 요청을 한다. 2. Dispatcher Servlet이 요청을 가로채어 Handler Mapping을 통해 컨트롤러에게 처리 요청을 보내고 3. Controller가 요청을 처..
용어 정리 DAO(Data Access Object) - DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 객체, Service와 DB를 연결하는 고리의 역할을 한다. BO(Business Object) -여러 DAO를 활용하여 비즈니스 로직을 처리하는 클래스, Service에 해당 DTO(Data Transfer Object) - 계층 간 데이터 교환을 위한 객체, 데이터를 각 레이어 간에 전달하는 목적을 가지며 객체의 속성과 getter, setter만 가지고 있다. 하지만 보통 DB에서 꺼낸 값을 임의로 변경할 필요가 없기 때문에 DTO클래스에는 setter가 없다. 대신 생성자에서 값을 할당한다. VO(Value Object) - DTO와 동일한 개념이지만 read only 속성을..
Lombok이란? 자바 개발 시, 자주 사용하는 Getter, Setter, 생성자 등을 자동으로 생성해주는 라이브러리이다. @Getter, @Setter, @RequiredArgsConstructor 등의 어노테이션 방식을 이용한다. 기존 방식의 문제점 - 멤버 변수를 제어하기 위해 모델 객체마다 반복적으로 메소드들을 생성해야 한다. - IDE에서 generate를 이용해서 편하게 생성할 수 있지만, 변수명이 바뀌면 다시 만들어야 한다. -> Lombok을 사용하면 생성자, 접근자, 설정자, toString() 자동생성 라이브러리이므로 위와 같은 번거러움을 없앨 수 있고 이외에도 다양한 기능들을 쓸 수 있다. 장점 - 코드 작성이 쉽고 필요한 코드가 적어진다. - 코드가 명시적이다. - 수정이 간편해진..
JVM(Java Virtual Machine)이란? JVM(Java Virtual Machine)이란 자바 가상 머신의 약자를 줄여 부르는 용어이다. 자바 프로그램은 JVM을 사용하여 프로그램을 실행한다. 일반적 프로그램들은 OS위에서 실행되지만 자바 프로그램 같은 경우는 OS 위의 JVM에서 실행된다. 왜그럴까? -> 자바 프로그램을 OS 종류에 상관없이 실행시키기 위함이다. 예를 들자면 Windows에서 동작하도록 구현된 프로그램은 Linux에서는 동작하지 않는다. 자바 프로그램은 OS 종류에 관계 없이 그에 맞는 JVM을 다운로드하여 자바 프로그램을 실행 시킬 수 있다. 즉 JAVA와 OS 사이에서 JVM이 중개자 역할을 수행하는 것이다. 또 JVM은 메모리 관리, Garbage collection..
문제 설명 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 문제 풀이 import java.util.Arrays; public class Maraton { public String solution(String[] participant, String[] completion) { Arrays.sort(participant);//내림 차순 정렬 Arrays.sort(completion); int..
문제 설명 https://programmers.co.kr/learn/courses/30/lessons/12922 코딩테스트 연습 - 수박수박수박수박수박수? 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한 programmers.co.kr 문제 풀이 public class clapping { public String solution(int n) { String answer = ""; for (int i = 0; i < n; i++) { answer += (i%2 == 1)? "박":"수"; } return answer; } public static ..
문제 설명 https://programmers.co.kr/learn/courses/30/lessons/12919 코딩테스트 연습 - 서울에서 김서방 찾기 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니 programmers.co.kr 문제 풀이 public class Kimseobang { public String solution(String[] seoul) { String answer= ""; for(int i=0; i 왜? -> ==의 경우 첫 문자 시작의 "주소"를 비교하기 때문!! 따라서 내용은 같지..
문제 설명 https://programmers.co.kr/learn/courses/30/lessons/12940 코딩테스트 연습 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 programmers.co.kr 문제 풀이 public class Sol44 { public int[] solution(int n, int m) { int[] answer = {n, m}; int max = n, min = m; int remainder; if (n == m) { return answer; } else if (m > n) { max =..