728x90
AOP가 없던 상황모든 메서드의 호출 시간을 측정할 때 문제가 발생한다. 기존 방식- 시간을 측정하는 공통된 로직은 공통 관심 사항이다.- 핵심 비즈니스 로직과 섞여 유지보수가 어렵다. 기존 방식 코드public Long join(Member member) { long start = System.currentTimeMillis(); try { validateDuplicateMember(member); memberRepository.save(member); return member.getId(); // 이 3줄만 핵심 비즈니스 로직이다. } finally { long finish ..
순수 JDBC- 아래와 같이 초기 설정을 해준다.- DataSource 를 주입받아, `getConnection( )`을 통해 데이터베이스와 연결된 소켓을 얻을 수 있다.- 반복 코드가 굉장히 길고 많다.- SQL 문을 직접 작성해야 한다. > 참고 - 스프링 부트가 데이터베이스 접속 정보로 DataSource을 생성하여 스프링 빈으로 만든다. 초기 설정- build.gradle 파일에 jdbc, h2 데이터베이스 관련 라이브러리 추가implementation 'org.springframework.boot:spring-boot-starter-jdbc'runtimeOnly 'com.h2database:h2' - 스프링 부트 데이터베이스 연결 설정 추가resources/application.propertie..
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 패키지를 포함한 하위 패키지만 스캔 (형제 패키지는 등..
정적 콘텐츠- static/index.html 을 올리면 Welcome page 기능 제공- 정적 리소스를 제공 (HTML, CSS, JS, 이미지 등)- 브라우저가 요청하면 spring 이 그대로 반환- 파일 자체로 클라이언트로 전달 resources/static 폴더에 html 파일을 생성하고주소창에 localhost:8080/hello-static.html 을 입력하면, 소스 코드 파일 그대로 전달된다. (hello-static 은 임의의 viewName)1. resources/static/hello-static.index 파일을 생성한다.2. localhost:8080/hello-static.html 을 입력하여 서버에 접속한다.3. 파일이름과 일치하는 @GetMapping("hello-stati..
프로젝트 생성하는 법스프링부트 스타터(https://start.spring.io/)에 들어간다. (스프링부트 스타터 홈페이지) Project : Gradle - Groovy (요즘은 거의 다 Maven 보다 Gradle 사용)Language : 원하는 언어 선택SpringBoot : 정식 릴리즈 버전 선택 (SNAPSHOT(만드는 중), M1(정식 릴리즈 X))Project Metadata : Group(보통 기업 명), Artifact(프로젝트 명), 나머지 기본값Dependencies : Spring Web, Thymeleaf(아니면 FreeMarker) 이렇게 선택한 후, `Generate` 를 눌러 다운로드하고 압축을 풀어 저장한다.인텔리제이를 열어 `Open or Import` 를 눌러 파일 안..
검색 / 이동⸰ 클래스 이름 (파일 이름) 검색하여 이동 - `Ctrl` + (`Shift` + ) `N` - `Cmd` + ( `Shift` +) `O`⸰ 선언으로 이동 - `Ctrl` + `B` or `Ctrl` + `Click` - `Cmd` + `B` or `Cmd` + `Click` ⸰ 타입 선언으로 이동 - `Ctrl` + `Shift` + `B` - `Ctrl` + `Option` + `B`⸰ 이전/다음 파일로 이동 - `Alt` + `←`/`→` - `Cmd` + `[`/`]`⸰ 최근 열었던 파일 목록 - `Ctrl` + `E` - `Cmd` + `E`⸰ 단어 (전체에서) 검색 - `Ctrl` + (`Shift` + ) `R` - `Cmd` + (`Shift` ..