![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/WmNTZ/btqFP8YUzNT/UV9nJW8L5UvBHlbgq3eVPK/img.png)
1. 스프링 컨테이너에 하나 이상의 동일한 타입의 객체가 존재할 경우 1-1 @Qualifier로 어떤 객체를 사용할지를 명시해 주어야 한다. 1-2 아니면 @Primary로 지정하여 @Qualifier가 없는 경우 기본으로 사용될 객체를 지정해 준다. 2. 사용법 2-1 우선 예제로 사용할 공통 인터페이스와 구현 클래스 두개를 만들었다. 2-1-1 PrimaryGreetingServiceImpl은 @Primary가 지정되어 있어 동일한 타입의 여러 객체가 있을 경우 2-1-1-1 우선 순위를 갖게 된다. // 인터페이스 정의 package pe.pilseong.demodi.services; public interface GreetingService { String sayGreeting(); } // P..
1. SOLID는 객체지향 프로그래밍에서 지켜야 할 더 나은 소프트웨어를 개발을 위한 필수 지침이다. 1-1 5가지의 원리는 의존성 관리에 대해 초점을 맞추고 있다. 1-2 잘못설계된 의존성 관리는 코드 확장과 수정을 힘들게 만든다. 1-3 스프링은 이 의존성에 작성에 대한 최소한의 제약만 제공하기 위한 프레임워크이다. 2. Single Responsibility - 하나의 클래스는 하나의 책임만 가져야 한다는 원리 3. Open Close - 확장에는 열려있고 수정에는 닫혀있어야 한다는 원리 3-0 프로그램의 기능이 확장되거나 변경될 때 기존의 소스는 수정하지 않고 추가로 코드를 작성한다. 3-1 인터페이스를 두고 다양하게 확장 가능하도록 구현 3-2 변경될 것과 고정될 것을 구별한다. 변경될 것은 하..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/HFVAu/btqFyDLkovM/0Zc5QUq9iT0be1HlLzPM41/img.png)
1. CommandLineRunner는 스프링 부트가 제공하는 단순한 인터페이스이다 package org.springframework.boot; public abstract interface CommandLineRunner { public abstract void run(java.lang.String... args) throws java.lang.Exception; } 2. 이 클래스를 구현하여 run메소드를 작성하면 프로그램 기동시에 ApplicationContext 생성이 종료된 후에 run메소드가 자동으로 실행된다. 3. 초기화 명령을 담는 곳으로 사용되며 주로 개발 시에 간단한 테스트 용도로 이용된다. 4. 사용법이 간단하기 때문에 기동 클래스에서 상속하여 사용하는 경우가 많지만 separate ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bafU5a/btqFxAnOOTm/kge3DHNpx73ysVe74hCptk/img.png)
1. 프로그램의 실행환경에 따라 설정이 달라져야 할 때가 있다. 1-1 개발환경에서는 로그레벨이나 데이터베이스 설정 등이 달라질 수 있기 때문이다. 2. application properties를 작성하여 profile을 설정하는 방법 2-1 application.properties기본 설정파일 이외에 application-환경이름.properties 형식으로 설정파일을 작성할 수 있다. 2-2 예를 들면, 개발환경이면 application-dev.properties, 실제환경이면 application-prod.properties를 만들 수 있다. 2-3 실행 환경지정은 아래 application.properties의 spring.profiles.active=환경이름 으로 할 수 있다. 2-3-1 이렇게..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/6pJB3/btqFygh6O8U/Qw85YQJvGMsbDiN3R2iz21/img.png)
1. 스프링 개발의 기본 중에 하나가 테스트이다. 간단하게 몇 가지 메모해 준다. 2. junit 테스트 2-0 maven archetype quickstart 1.4로 생성하니 junit 4.11로 dependency가 생성된다. junit junit 4.11 test 2-1 대상 클래스 package pe.pilseong; /** * Hello world! * */ public class MyMath { int sum(int[] numbers) { int sum = 0; for (int i : numbers) { sum += i; } return sum; } } 2-2 테스트 클래스 2-2-1 일반적인 테스트는 기대값과 결과 값의 단순 비교이다. 2-2-2 아래 같이 assert를 기본으로 사용한다...
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bbKudV/btqFwiUPMsr/BhEEn44e9y1lyH9AZ2NUNk/img.png)
1. 아직도 xml 형식으로 데이터를 제공하는 곳이 많긴 하지만 별로 사용되지 않는 것 같다. 2. json외에 xml로 서비스를 요청하면 2-1 Accept 헤더에 application/xml로 서비스를 요청하면 406 not acceptable로 반환된다. 3. 해결 방법은 jacson dataformat xml dependency를 추가하면 된다. 3-1 스프링 부트의 경우에는 호환되는 jackson의 버전을 자동지정하므로 version정보는 삭제해야 안전하다. com.fasterxml.jackson.dataformat jackson-dataformat-xml 2.11.1 4. xml 반환 값
1. 스프링에서 View를 사용하는 방식은 이미 철지난 이야기이지만 그냥 붙여둔다. 2 우선 Error handler를 위한 Controller을 하나 만든다. 2-1 모든 에러는 error.jsp로 넘기고 있다. 2-2 필요하면 여기서 데이터베이스에 에러를 저장하거나 하는 작업을 한다. package pe.pilseong.steps.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.Exceptio..
0. Date를 변환하고 싶은 경우는 아래 링크를 참고한다. Spring Basic : Form을 Date, LocalDate로 변환하기 0. Form에서 전송한 데이터를 Date로 변환이 필요한 경우가 많다. 워낙 다양하기 때문에 생각 날 때마다 추가할 예정 form에서 Parmater로 받아 Controller에서 Date로 변환하는 방법 (LocalDate에도 사용가능� kogle.tistory.com 1. InitBinder는 스프링 MVC가 나오면서 부터 지원한 오래된 기술이다. 2. 현재는 나중에 나온 Converter를 많이 사용하기는 하지만 여전히 유용한 기술이다. 3. @InitBinder의 목적은 View에서 입력한 Form에 객체정보를 Controller의 객체로 변환할 때 3-1 적..
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- 상속
- XML
- Angular
- form
- MYSQL
- 설정하기
- 하이버네이트
- 외부파일
- WebMvc
- jsp
- spring boot
- 로그인
- 스프링
- login
- crud
- 자바
- 스프링부트
- Rest
- 설정
- hibernate
- Spring Security
- RestTemplate
- Security
- one-to-many
- Many-To-Many
- Validation
- 매핑
- one-to-one
- Spring
- mapping