본문 바로가기

Java

(189)
@Profile(각 환경별로 등록할 스프링 빈 분리) @Profile 을 사용하면 각 환경 별로 외부 설정 값을 분리하는 것을 넘어서, 등록되는 스프링 빈도 분리할 수 있다 만약에 프로필에 따라 빈 등록이 변경되어야 한다면? 예를 들어서 기능을 붙여야 하는데, 로컬 개발 환경에서는 실제 결제가 발생하면 문제가 되니 가짜 결제 기능이 있는 스프링 빈을 등록하고, 운영 환경에서는 실제 결제 기능을 제공하는 스프링 빈을 등록한다고 가정해보자 config 파일에서 @Profile 사용 @Slf4j @Configuration public class PayConfig { @Bean @Profile("default") public LocalPayClient localPayClient(){ log.info("LocalPayClient 빈 등록"); return new L..
YAML 스프링은 설정 데이터를 사용할 때 application.properties 뿐만 아니라 application.yml 이라는 형식도 지원한다. 실무에서는 YAML을 주로 사용함. *주의 : application.properties가 우선권을 가지므로 yml 사용 시 제거 필수 yml 문서 프로필 구분자 = --- my: datasource: url: local.db.com user: local_user password: local_pw etc: max-connection: 1 timeout: 60s options: LOCAL, CACHE --- spring: config: activate: on-profile: dev my: datasource: url: dev.db.com user: dev_user pa..
내부설정파일 통합 application.properties spring.config.activate.on-profile=dev url=dev.dv.com username=dev_user password=dev_pw #--- spring.config.activate.on-profile=prod url=prod.dv.com username=prod_user password=prod_pw #--- 로 영역을 구분한다. (구분자 주위 위아래 주석 적으면 안됨) spring.config.activate.on-profile=프로필이름 ex) 개발 서버에서는 dev프로필 사용 / 운영 서버에서는 prod 사용 커맨드 라인 옵션 인수 실행 --spring.profiles.active=dev 자바 시스템 속성 실행 -Dspring.pro..
Auto Configuration(자동구성) Auto Configuration 스프링 부트는 자동 구성(Auto Configuration)이라는 기능을 제공하는데, 일반적으로 자주 사용하는 수 많은 빈들을 자동으로 등록해주는 기능이다. JdbcTemplate , DataSource , TransactionManager 등등 모두 스프링 부트가 자동구성을 제공해서 자동으로 스프링 빈으로 등록된다. 자동 구성을 언제 사용하는가? AutoConfiguration 은 라이브러리를 만들어서 제공할 때 사용하고, 그 외에는 사용하는 일이 거의 없다. 왜냐하면 보통 필요한 빈들을 컴포넌트 스캔하거나 직접 등록하기 때문이다. 하지만 라이브러리를 만들어서 제공할 때는 자동 구성이 유용하다. 실제로 다양한 외부 라이브러리들이 자동 구성을 함께 제공한다. @AutoC..
커스텀 어노테이션 https://velog.io/@potato_song/Java-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98-%EC%BB%A4%EC%8A%A4%ED%85%80-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98-%EB%A7%8C%EB%93%A4%EA%B8%B0 [[Java] 어노테이션 (+커스텀 어노테이션 만들기) 자바 어노테이션에 대한 간략한 이해와 커스텀 어노테이션 만들어서 사용하는 법을 araboza velog.io](https://velog.io/@potato_song/Java-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98-%EC%BB%A4%EC%8A%A4%ED%85%80-%EC%96%B4%EB%..
Garbage Collector 메모리의 힙 영역에는 객체와 배열이 생성된다. 여기서 생성된 객체와 배열은 JVM 스택 영역의 변수나 다른 객체의 필드에서 참조한다.(자바에서는 배열도 객체로 취급) 만일 참조하는 변수나 필드가 없다면 의미없는 객체가 된다 -> JVM이 GC를 실행시켜 사용하지 않는 객체를 자동으로 제거한다.
List public int[] solution(String my_string) { char[] original = my_string.toCharArray(); List answer = new ArrayList(); for(char c : original){ if(48 내림차순 정렬
JPA, 스프링 데이터 JPA jpa는 모든 데이터 변경이 transaction 내에서 실행되어야 함. service 클래스에 @Transactional 부착. Spring Data JPA는 JpaRepository를 상속하는 인터페이스의 구현체를 만들어서 등록해줌. public interface SpringDataJpaMemberRepository extends JpaRepository, MemberRepository { @Override Optional findByName(String name); } @Configuration public class SpringConfig { private final MemberRepository memberRepository; @Autowired public SpringConfig(MemberR..