일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- fetch
- PS
- shared lock
- CHECK OPTION
- 다대일
- FetchType
- 즉시로딩
- 힙
- execute
- 스프링 폼
- BOJ
- 이진탐색
- SQL프로그래밍
- 연관관계
- querydsl
- eager
- 다대다
- exclusive lock
- JPQL
- 데코레이터
- 유니크제약조건
- 지연로딩
- 동적sql
- dfs
- 일대다
- 스토어드 프로시저
- 백트래킹
- 낙관적락
- 연결리스트
- 비관적락
- Today
- Total
목록전체 글 (555)
흰 스타렉스에서 내가 내리지
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/beuKif/btsB5V9Fa4h/PH1MQTu0c8rDQKqOI6vYU1/img.png)
- 지표(metric), 추적(trace), 감사(auditing), 모니터링 스프링부트가 제공하는 액추에이터는 위 프로덕션 준비 기능을 매우 편리하게 사용할 수 있는 다양한 편의 기능을 제공함. 프로메테우스, 그라파나 같은 최근 유행하는 모니터링 시스템과 매우 쉽게 연동할 수 있는 기능 제공 implementation 'org.springframework.boot:spring-boot-starter-actuator' http://localhost:8080/actuator 경로를 통해 기능을 제공한다. /actuator/health 경로에 접속하면 health 결과를 제공한다. 액츄에이터가 제공하는 수많은 기능을 웹 환경에서 보이도록 노출하려면, * 액츄에이터 기능을 웹에 노출 management: en..
설정값이 아니라 각 환경마다 서로 다른 빈을 등록해야 한다면? @Configuration public class PayConfig { @Bean @Profile("default") public LocalPayClient localPayClient(){ log.info("LocalPayClient 빈 등록"); return new LocalPayClient(); } @Bean @Profile("prod") public ProdPayClient prodPayClient(){ log.info("ProdPayClient 빈 등록"); return new ProdPayClient(); } } @Profile 애노테이션을 사용하면 해당 프로필이 활성화된 경우에만 빈을 등록한다. @Component @Required..
보호되어 있는 글입니다.
어떤 변수가 1부터 99 까지 범위의 값만 가져야 한다면? 이메일을 외부 설정에 입력했는데, 이메일 형식에 맞지 않는다면? Java에서는 java bean validation 이라는 표준 검증기가 제공된다. build.gradle 에 다음 의존성을 추가한다. implementation 'org.springframework.boot:spring-boot-starter-validation' @ConfigurationProperties 에 관한 내용은 이전 글에서. @Getter @ConfigurationProperties("my.datasource") @Validated public class MyDataSourcePropertiesV3 { @NotEmpty private String url; @NotEmp..
외부 설정 묶음을 객체로 변환할 수 있다. 이를 타입 안전한 설정 속성 이라 한다. 객체를 사용하면 타입을 사용할 수 있다. 따라서 실수로 잘못된 타입이 들어오는 문제도 방지할 수 있고, 객체를 통해서 활용할 수 있는 부분들이 많아진다. # application.yml my: datasource: url: local.db.com username: dabin password: heyDB etc: max-connection: 1 timeout: 3400ms options: CACHE,ADMIN # MyDataSourcePropertiesV1.java @Data @ConfigurationProperties("my.datasource") public class MyDataSourcePropertiesV1 { p..
@Slf4j @Configuration public class MyDataSourceValueConfig { @Value("${my.datasource.url}") private String url; @Value("${my.datasource.username}") private String username; @Value("${my.datasource.password}") private String password; @Value("${my.datasource.etc.max-connection}") private int maxConnection; @Value("${my.datasource.etc.timeout}") private Duration timeout; @Value("${my.datasource.et..
docker pull mysql docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=1234 -d -p 3305:3306 mysql:latest 혹시 호스트에 MySQL이 설치되어 있다면 포트번호가 겹치기 때문에 위의 예시처럼 컨테이너와 연결되는 호스트의 포트번호는 3306과 다른 번호로 지정해주는 것이 좋다. docker exec -it mysql-container bash mysql -u root -p ++ UTF-8 docker run -it -e LC_ALL=C.UTF-8 mysql docker run -it -e LC_ALL=C.UTF-8 -e MYSQL_ROOT_PASSWORD=1234 -d -p 3305:3306 mysql:8.0.35
MySQL (맥에서 MySQL 서버 실행하기) 설치 brew mysql 실행 mysql.server start MySQL을 데몬으로 실행 brew services start mysql 운영체제의 백그라운드로 MySQL이 계혹 실행되게 하고 싶을 때, HomeBrew가 제공하는 명령을 이용하면 된다. → 데몬 실행 데몬 프로세스 (daemon process) 서비스 요청에 응답하기 위해 오랫동안 실행중인 백그라운드 프로세스. 운영체제에서 보통 d로 끝나는 프로세스들이 대표적인데, httpd, sshd, named, lpd 등이 있다. 재시작 brew services restart mysql 데몬으로 실행되고 있는 프로그램들 보기 brew services list MySQL 프로세스가 운영체제에 실행되고 있..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/qgVOp/btsz1LG95s2/qXgUvQ9lXJZ4nI3OwfyKl1/img.png)
개발용 설정 파일: application-dev.properties 운영용 설정 파일: application-prod.properties 빌드 시점에 개발, 운영 설정 파일을 모두 포함해서 빌드한다. spring.profiles.active 외부 설정에 값을 넣으면 해당 프로필을 사용한다고 판단한다. 예) - spring.profiles.active=dev - dev 프로필이 활성화 되었다. - application-dev.properties 를 설정 데이터로 사용한다. - spring.profiles.active=prod - prod 프로필이 활성화 되었다. -application-prod.properties 를 설정 데이터로 사용한다. 실행 IDE에서 커맨드 라인 옵션 인수 실행 → --spring...
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/y660B/btszSIp4rrX/6xKagMtDnkiB1hFQ1t7etK/img.png)
이 Configuraiton을 상황에 따라서 등록을 할 건지 말 건지를 결정 @Configuration @Conditional(MemoryCondition.class) public class MemoryConfig { jar 파일 실행시 -Dmemory=on 추가해주면 Configuration 통과, 없으면 통과 x -Dxx=xx는 환경변수를 추가해주는 역할. 근데 아래랑 똑같다. → 환경정보가 memory=on 이라는 조건에 맞으면 동작하고, 그렇지 않으면 동작하지 않는다. ㄷ