본문 바로가기

전체 글

(69)
스프링부트 어노테이션 / @RestController(vs @Controller) 이해하기 어플리케이션의 컨트롤러를 지정하는 어노테이션으로 @Controller 와 @RestController 가 있다. 이번 포스팅에서는 @Conrtroller 와 @RestController 의 동작이 어떻게 다른지 확인하는 방법을 통해 둘을 이해해 보려고 한다. 환경 dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-mustache' testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.juni..
스프링부트 / Bean 이해하기 Bean? Spring 을 공부하면서 빈(Bean) 이라는 말을 참 많이 듣는다. 'bean 으로 등록한다', 'bean 의존성'..등등 Spring 에 익숙하지 않은 사람이라면 bean 이라는게 참 낯설고 Spring 을 더 어렵게 만드는 요소일 것이다. 오늘은 그 '빈' 이라는 것을 조금이나마 이해해보는 시간을 가져보자. Spring Container 먼저 bean 을 이해하기 위해서 스프링 컨테이너(Spring Container 또는 Ioc 컨테이너라고 하기도 한다) 에 대해서 알아둘 필요가 있다. 자바 에플리케이션은 에플리케이션 동작을 제공하는 객체들로 이루어져있다. 이때, 객체들은 독립적으로 동작하는 것보다 서로 상호작용하여 동작하는 경우가 많다. 이렇게 상호작용하는 객체를 '객체의 의존성'이라..
스프링부트 어노테이션 / @RequestParam @RequestParam 1. @RequestParam? 컨트롤러에서 @RequestMapping 을 지정한 메서드의 경우 메서드 인자에 @RequestParam 을 지정해 변수의 값을 메서드 인자로 할당 할 수 있다. @Controller @RequestMapping("/user") public class UserController { @RequestMapping(value = "/join", method = RequestMethod.POST) public String userJoin(@RequestParam Map param) { ... } 2. 사용방법 2.1 Map 이름 이메일 비밀번호 가입 위와 같은 회원가입 폼이 있다고 하자. 가입버튼을 누르면 name 이라는 이름으로 입력한 이름이, emai..
디폴트 메서드 정리 디폴트 메서드 1. 디폴트 메서드란? 자바 8부터 인터페이스에 메서드 구현을 포함시킬 수 있다. 이때 인터페이스에 구현하는 메서드를 디폴트 메서드라고 한다. 예시) public interface Interface { default void defaultMethod(){ System.out.println("디폴트메서드 입니다."); } } public class Client implements Interface { } public class Main { public static void main(String[] args) { Client client = new Client(); client.defaultMethod(); } //실행결과 //디폴트메서드 입니다. } 누군가는 디폴트 메서드를 포함한 인터페이스..
데이터 베이스 a. 필요한 데이터가 어떤 것인지 모른다면 DB 설계는 할 수 없다. - 응용 프로그램에 대한 이해는 필수이며, 그 외에도 자료형은 어떤 것인지, 자릿수와 같은 표시상 사용자 편리성 데이터도 저장해야 하는지 등도 고려해야 한다. b. 중복으로 저장된 데이터 항목을 제거하자 - 데이터를 중복으로 저장하면 일관되지 않은 데이터, 비정상적인 삽입/갱신/삭제 처리, 디스크 공간 낭비 등의 문제가 발생한다. - 정규화는 중복을 줄이고 무결성을 향상하는 데 초점을 둔 작업이다. 중복을 해결함으로써, 데이터간의 모순을 방지할 수 있어, 질의해야할 대상이 명확해진다. - DB 역시 데이터의 본질을 표현하는 적절한 네이밍이 중요하다. '명명 규칙을 통일'하지 않아 각 속성의 의미가 모호할 경우, 잘못된 설계를 할 수 있..
Optional 정리 Optional의 등장배경 NullPointerException 은 Java 로 개발을 하면서 가장 많이 겪는 예외 중 하나일 것이다. 우리는 이 NullPointerException 을 피하기위해 다음과 같은 코드를 짜곤한다. public String getCarName(Person person) { if (person != null) { Car car = person.getCar(); if (car != null) { return car.getName(); } } } 혹은 다음과 같은 방법도 있다. public String getCarName(Person person) { if (person == null) { return "Unknown"; } Car car = person.getCar(); if(..
springboot - No default constructor for entity 에러 Entity에 public으로 기본생성자를 추가해주니 문제해결
Springboot - 컨트롤러 리턴 문제 문제 springboot 를 공부하던중 controller 에서 리턴하는 페이지로 이동하지 않는 문제를 겪었다. 위와 같이 코드를 구현하고 resources > templates > index.html 파일을 만들었지만 해당 파일을 인식하지 못하고 오류가 나는 문제를 겪었다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-mustache' implementation 'org.springframework.boot:spring-boot-starter-web' developmentOnly 'org.springframework.boot:spring-boot-devtools' providedRuntime 'org.spring..