| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- redis
- DI
- dockerhub
- Spring Container
- Spring
- @ComponentScan
- 페이징
- JWT
- 서블릿 컨테이너
- 지연 로딩
- 스프링 부트
- AWS
- Spring Data JPA
- JdbcTemplate
- DLQ
- 쿠버네티스
- securitycontextholderfilter
- JPQL
- mybatis
- @Transactional
- Dead Letter Queue
- docker compose
- Routing Key
- MSA
- docker
- 컨테이너
- kafka
- CORS
- JPA
- Web
- Today
- Total
목록Spring (80)
look-forest
스프링이 제공하는 외부 설정을 읽는 방법들을 알아보자. 스프링이 지원하는 다양한 외부 설정 조회 방법Environment@Value - 값 주입@ConfigurationProperties - 타입 안전한 설정 속성외부 설정 사용 - Environment외부 설정들은 스프링이 제공하는 Environment 를 통해서 일관된 방식으로 조회할 수 있다.@Configurationpublic class MyDataSourceEnvConfig { private final Environment env; @Bean public MyDataSource myDataSource() { String url = env.getProperty("my.datasource.url"); Stri..
외부 설정외부 설정이 필요한 이유하나의 애플리케이션을 로컬/개발/운영 환경과 같이 여러 다른 환경에서 사용해야 할 때가 있다.문제는 각각의 환경에 따라서 서로 다른 설정값이 존재한다는 점이다. (로컬/개발/운영 DB 별 url 정보 등) 그래서 보통 빌드는 한번만 하고 각 환경에 맞추어 실행 시점에 외부 설정값을 주입한다. ☆유지보수하기 좋은 애플리케이션 개발의 가장 기본 원칙은 변하는 것과 변하지 않는 것을 분리하는 것이다.각 환경에 따라 변하는 외부 설정값은 분리하고, 변하지 않는 코드와 빌드 결과물은 유지했다.덕분에 빌드 과정을 줄이고, 환경에 따른 유연성을 확보하게 되었다. 외부 설정 방법 OS 환경 변수: OS에서 지원하는 외부 설정, 해당 OS를 사용하는 모든 프로세스에서 사용자바 시스템 속성..
선 요약 : 스프링 부트가 제공하는 라이브러리 빈 자동 구성 방법 1. 라이브러리에서 빈을 등록할 때 @AutoConfiguration을 붙인다. 이때 @ConditionalOnXXX을 활용할 수 있다. 2. org.springframework.boot.autoconfigure.AutoConfiguration.imports 파일에 자동구성 클래스 정보를 명시한다. 3. 스프링부트 프로젝트에서 @EnableAutoConfiguration으로 자동 구성을 활성화하고, @Import(AutoConfigurationImportSelector.class) 로 모든 라이브러리의 위 파일을 읽어 설정 정보를 등록한다. 학습 목표자동 구성을 언제 사용하는가?AutoConfiguration 은 라이브러리를 만들어서 ..
스프링 부트는 개발자가 라이브러리들을 편리하게 사용할 수 있는 다양한 기능들을 제공한다.외부 라이브러리 버전 관리스프링 부트 스타터 제공라이브러리 버전 관리라이브러리 직접 관리웹 프로젝트를 하나 설정하기 위해서는 수 많은 라이브러리를 알아야 한다.여기에 추가로 각각의 라이브러리의 버전까지 골라서 선택해야 한다. 문제는 각 라이브러리들 간에 서로 호환이 잘 되는 버전도 있지만 호환이 잘 안되는 버전도 있다는 점이다.개발자가 라이브러리의 버전을 선택할 때 이런 부분까지 고려하는 것은 매우 어렵다.dependencies { //스프링 웹 MVC implementation 'org.springframework:spring-webmvc:6.0.4' //내장 톰캣 implementati..
HTML 폼 전송 방식application/x-www-form-urlencodedmultipart/form-data application/x-www-form-urlencoded 방식 multipart/form-data 방식파일을 업로드 하려면 파일은 문자가 아니라 바이너리 데이터를 전송해야 한다. 또한 보통 업로더 이름, 파일 이름 등 문자도 함께 전송해야 한다. 이를 위해 HTTP는 multipart/form-data 라는 전송 방식을 제공한다. multipart/form-data 방식은 다른 종류의 여러 파일과 폼의 내용 함께 전송할 수 있다. (그래서 이름이 multipart 이다.) 폼의 입력 결과로 생성된 HTTP 메시지를 보면 각각의 전송 항목이 Part로 구분이 되어있다.Content-Di..
WAR 배포 방식은 WAS를 별도 설치해야하고, 빌드한 WAR 파일을 WAS에 배포해야 하는 번거로움이 있다. 스프링 부트는 이러한 과정없이 내장 톰캣을 제공해서 이러한 문제를 해결했다. 내장 톰캣을 실행해 배포 과정을 단순화 해보고,나아가 내장 톰캣 실행, 스프링 컨테이너 생성, 디스패처 서블릿 등록의 모든 과정을 편리하게 처리해주는 스프링 부트를 직접 만들어보자.내장 톰캣(embed tomcat) 기능스프링 부트는 단순히 main()메서드만 실행하면 웹 서버까지 실행된다. 톰캣도 자바로 만들어져 있으니 톰캣을 마치 하나의 라이브러리로 포함해서 사용하는 것이다. main 메서드를 실행해서 톰캣을 띄우는 코드public static void main(String[] args) throws Lifecyc..
외장 톰캣에 웹 애플리케이션을 배포하는 방법과 springboot 없이 웹 애플리케이션을 셋팅하는 방법, 즉 서블릿 컨테이너를 초기화해 디스패처 서블릿을 만들고 스프링 컨테이너와 연결하는 방법을 알아보자.웹 서버와 스프링 부트 소개외장 서버 VS 내장 서버 전통적인 방식과거에는 웹 애플리케이션을 개발할 때 서버에 톰캣 같은 WAS를 설치했다. 그리고 war 파일로 코드를 빌드해 WAS에 전달해서 배포하는 방식을 따랐다. 최근 방식최근에는 스프링 부트가 내장 톰캣을 포함하고 있다. 애플리케이션 코드 안에 톰캣 같은 WAS가 라이브러리로 내장되어 있다. 코드를 JAR로 빌드한 다음에 실행하기만 하면 WAS도 함께 실행된다. 개발자는 main() 메서드만 실행하면 되고, WAS 설치나 IDE 같은 개발 환경에..
스프링은 내부에서 ConversionService 를 사용해서 타입을 변환한다.사용자 정의 컨버터나 포매터를 구현할 때는 Converter, Formatter 인터페이스 구현 후,WebMvcConfigurer의 addFormatter를 구현해 추가 등록하면 된다.스프링 타입 컨버터 소개HTTP 요청 파라미터는 모두 문자로 처리된다. 따라서 요청 파라미터를 자바에서 다른 타입으로 변환해서 사용하고 싶으면 숫자 타입으로 변환하는 과정을 거쳐야 한다.@GetMapping("/hello-v1")public String helloV1(HttpServletRequest request) { String data = request.getParameter("data"); //문자 타입 조회 Integer in..