728x90
스프링 컨테이너 (애노테이션 기반 자바 코드 설정)// 스프링 컨테이너 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); `ApplicationContext`를 스프링 컨테이너라고 한다.이때, ApplicationContext 는 인터페이스이며, AnnotationConfigApplicationContext 는 인터페이스의 구현체이다.스프링 컨테이너는 생성자가 클래스 정보를 받으면, 해당 클래스가 스프링 빈으로 자동 등록된다. 스프링 컨테이너는 두 가지 방식으로 설정할 수 있다.1. `XML 기반` (거의 사용 X)2. `애노테이션 기반의 자바 설정 클래스` (거의 대부분) 스프..
빈 출력하기모든 빈 출력하기@Test@DisplayName("모든 빈 출력하기")void findAllBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { Object bean = ac.getBean(beanDefinitionName); System.out.println("name=" + beanDefinitionName + " object=" + bean); }}스프링에 등록된 모든 빈 정보를 출력할 수 있다. 애플리케이션 빈 출력하기@Test@DisplayName("모든 빈 출력하기")void findAllBean..
[프로그래머스] (Java) 배달 - 다익스트라 알고리즘 문제 설명N개의 마을로 이뤄진 나라는 아래의 특징을 지닌다.각 마을에는 1 ~ N까지 번호가 각각 하나씩 부여되어 있다.각 마을은 양방향 도로로 연결되어 있다.도로를 지날 때 소요되는 시간은 도로별로 다르다.1번 마을에 있는 음식점에서 각 마을로 음식 배달을 하려고 할 때, N개 마을 중에서 K시간 이하로 배달이 가능한 마을의 개수를 구하려고 한다. 예를 들어, N = 5, K = 3인 경우 위와 같은 마을이 있다면,1번 마을에 있는 음식점은 [1, 2, 4, 5] 번 마을까지 3 이하의 시간에 배달할 수 있다. 그러나 3번 마을은 3시간이 초과되므로 3번 마을에서는 주문을 받지 않아, 최종적으로 주문을 받을 수 있는 마을의 개수는 4개가 된다. ..
AOP가 없던 상황모든 메서드의 호출 시간을 측정할 때 문제가 발생한다. 기존 방식- 시간을 측정하는 공통된 로직은 공통 관심 사항이다.- 핵심 비즈니스 로직과 섞여 유지보수가 어렵다. 기존 방식 코드public Long join(Member member) { long start = System.currentTimeMillis(); try { validateDuplicateMember(member); memberRepository.save(member); return member.getId(); // 이 3줄만 핵심 비즈니스 로직이다. } finally { long finish ..
순수 JDBC- JDBC 표준 인터페이스를 통해 표준화하여 여러 개의 데이터베이스에 동일하게 적용할 수 있다.- DataSource 를 주입받아, `getConnection( )`을 통해 데이터베이스와 연결된 소켓을 얻을 수 있다.- 반복 코드가 굉장히 길고 많다. (Connection, PreparedStatement, ResultSet 을 항상 열고 닫는 try-finally 구조가 필요)- SQL 문을 직접 작성해야 한다. > 참고 - 스프링 부트가 자동으로 데이터베이스 접속 정보로 DataSource을 생성하여 스프링 빈으로 등록한다. 예시 코드public class JdbcMemberRepository implements MemberRepository { private final Da..
H2 데이터베이스 설치- 교육용으로 적합- 개발, 테스트 용도로 가볍고 편리- 웹 화면 제공 H2 데이터베이스 설치를 위해 https://www.h2database.com/ 에 접속한 뒤, 원하는 버전을 선택해 설치한다.(H2 데이터베이스 홈페이지) 스프링 부트 2.x > 1.4.200 버전 다운로드스프링 부트 3.x > 2.1.214 버전 이상 다운로드 압축을 풀고,`h2` 파일에 들어가 `bin`폴더로 들어간다. 맥- `chmod 755 h2.sh` 로 권한을 줘야 실행이 된다.- `./h2.sh` 으로 h2.sh 파일을 실행한다. 윈도우- `./h2.bat` 로 h2.bat 파일을 실행한다. 정상 생성이 되지 않는 경우, url의 `:` 부분 앞 아이피 부분을 지우고, `localhost`로 수정하..
"안 돌아가는 예쁜 프로그램을 만드는 것이 아닌, 돌아가는 쓰레기를 만드는 것이다." 프리코스 종료 후,, 10월 15일부터 11월 11일까지의 프리코스가 종료되었다!그리고 한 달가량의 기간 뒤에 12월 9일 월요일에 1차 합격자 발표가 나오고, 5일 뒤인 12월 14일 토요일에 바로 최종 코딩 테스트가 있다. 우테코 7기 백엔드는 3주 차 PR 이 1600개(4주 차는 private 저장소여서 확인할 수 없다.)이고,최종 코딩 테스트는 최종 인원(백엔드는 약 85명 내외)의 2 배수를 뽑으니까 200명 정도로 예상한다면,1차 합격자 발표는 1600명에서 200명을 선발하는 과정인 것이다. 대략 8 : 1의 경쟁률을 가지며, 1차 합격자 발표가 나오기 전 한 달의 기간 동안 불안에 떨 수밖에 ..
1. 컴포넌트 스캔으로 스프링 빈 자동 등록- @Component 가 붙은 클래스는 스프링 빈으로 자동 등록된다.- `@Controller`, `@Service`, `@Repository`, `@Configuration` 은 @Component 를 포함하고 있어 자동 등록된다.- 일반적으로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드에 사용 ComponentScan 을 통한 탐색 범위 지정@ComponentScan( basePackages = "hello.core",}- basePackages : 탐색할 패키지의 시작 위치를 지정하면, 해당 패키지를 포함한 하위 패키지까지만 스캔된다.(ex. "hello.core" 라면, hello.core 패키지를 포함한 하위 패키지만 스캔 (형제 패키지는 등..