Spring boot

    [기본] 스프링 컨테이너와 스프링 빈

    메모 JUnit 5부턴 public 안해도 됨 iter 엔터: 이터레이터 soutm : 메소드명 찍어줌 soutv: 변수명 찍어줌 ctrl + D : 복사붙여넣기 alt + shift + 위아래 : 줄 이동 ctrl + E : 이전파일 ctrl + R : Replace같음 ctrl + shift + f10: (메소드 안에서) 해당 메소드 실행 ?? getBeanDefinition(beanDefinitionName) : 빈에 대한 정보(메타데이터)를 꺼낼 수 있음 beanDefinition.ROLE_APPLICATION: 스프링 내부에서 등록한 빈 말고 어플리케이션을 위해 개발자가 등록한 빈 스프링빈에 등록된 인스턴스 타입으로 결정됨 테스트에서는 출력물을 남겨두지 않는 것을 권장. 시스템 자체로 테스트할 ..

    [기본] 스프링 핵심 원리 이해2 - 객체 지향 원리 적용

    메모 ctrl + shift +T : Create new test @DisplayName("") JUnit5 부터 지원하는 기능, 해당 이름으로 테스트 결과 출력됨 항상 실패 테스트도 해봐야 한다. Assertions는 static으로 import하는게 좋다. final은 무조건 값이 할당되어야 함 ctrl + E : history ctrl + alt + m : extract method (함수뽑기) 인터페이스는 아무곳에도 의존하고 있지 않다. 다이어그램 의존하는쪽에서 화살표 출발한다. 새로운 할인 정책과 문제점 기획자가 기존 할인 정책 대신 새 정책을 적용할 것을 요구 "계획에 따르기보다 변화에 대응하기를" - 애자일 소프트웨어 개발 선언https://agilemanifesto.org/iso/ko/ma..

    [기본] 스프링 핵심 원리 이해1 - 예제 만들기

    메모 ~~Impl : 구현체가 하나일 때 관례상 사용 alt + insert : generate file -> setting -> keymap 검색 -> 찾고싶은 단축키 검색 F2: 오류난 곳으로 커서 이동 enum은 비교 시 ==이 맞음 객체 출력하면 기본적으로 객체 내부의 toString()이 출력됨 primative type (long 등) 은 null을 할당할 수 없음 Long은 가능 psvm 치고 엔터 : public static void main(String[] args) {} soutv 치고 엔터: System.out.println("변수: " + 변수) // 위 코드의 변수 중 선택할 수 있음 프로젝트 생성 순수 자바로만 프로젝트를 만들어보고 SOLID 원칙을 만족하는지 확인해보자 비즈니스..

    [기본] 객체 지향 설계와 스프링

    스프링의 역사 스프링 이전에 Enterprise Java Beans 줄여서 EJB라는 기술이 사용되었다. 그러나 서버 비용도 크고, 설계도 잘못되어 이에 불만을 느낀 Rod Johnson이 EJB 컨테이너를 대체하는 기술을 출시하고, Gavin King이 엔티티빈을 대체하는 Hibernate를 만들었다. Hibernate는 자바 표준화 되어 JPA(Java Persistence API)가 된다. 로드 존슨은 EJB의 문제점을 지적하며 스프링의 핵심 기반 코드(BeanFactory, ApplicationContext, POJO, 제어의 역전, 의존관계 주입)가 포함된 책을 출간한다. 후에 유겐 휠러, 얀카로프와 함께 오픈소스 프로젝트를 시작하며 이게 스프링이 된다. 스프링 프레임워크는 DI 컨테이너, AO..

    [입문] AOP

    모든 메소드의 호출 시간을 측정하고싶다면? 모든 메소드에 시간 관련 코드를 집어넣어야 한다. 이와 같이 공통으로 적용하는 사항을 '공통 관심 사항'이라고 하고 비즈니스 로직을 '핵심 관심 사항'이라고 한다. AOP (Aspect Oriented Programming, 관점 지향 프로그래밍) 을 활용하여 공통 관심 사항과 핵심 관심 사항 로직을 분리하고 편리하게 적용한다. package hello.hellospring.aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework...

    [입문] spring DB 접근 기술

    생성자가 하나일 땐 Autowired 생략 가능 solid 원칙 - SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), DIP(의존 역전 원칙), ISP(인터페이스 분리 원칙)을 말하며, 앞자를 따서 SOILD 원칙이라고 부른다. (https://dev-momo.tistory.com/entry/SOLID-원칙 ) stream? RowMapper? jpquery - 테이블 대상으로 쿼리 날리는 대신 객체를 대상으로 쿼리 날림 마지막 실행 재실행: ctrl + R 인라인 리턴: ctrl + alt + n refactor: ctrl + t 파일 찾기: ctrl + shift + n H2 데이터베이스 설치 H2 데이터베이스 - 교육, 테스트용으로 좋은 가벼운 DB jdbc:h2:..

    [입문] 회원 관리 예제_웹 MVC 개발

    파일이름변경: shift + F6 최근 파일 보기: ctrl + e 자동 리턴값 만들기: ctrl + alt + v 회원 웹 기능 - 홈 화면 추가 HomeController 와 home.html 파일을 추가하여 홈화면을 만든다. controller가 정적 파일보다 우선순위가 높으므로 교체되어 보여진다. 테그로 url 연결 회원 웹 기능 - 등록 위에서 연결한 url로 접속 시 MemberController에서 GetMapping을 통해 createForm.html을 반환(?)시킨다. 이름 등록

    [입문] 스프링 빈과 의존관계

    컴포넌트 스캔과 자동 의존관계 설정 MemberService 는 별 기능 없음 여러개 생성할 필요 없이 공유해서 쓰면 된다. -> 스프링 컨테이너에 등록하고 사용하자 딱 하나만 등록된다 @Autowired를 생성자에 붙이면 스프링의 멤버서비스를 자동으로 연결해줌 오류! MemberService를 찾을 수 없음 왜냐하면 지금 MemberService는 순수 자바 클래스이기 때문 스프링컨테이너에 등록하기 위해 MemberService에 @Service를 붙여주자 MemoryMemberRepository에도 @Repository 위와 같은 방식이 스프링 빈을 등록하는 컴포넌트 스캔 방식 @SpringBootApplication 을 포함하는 패키지를 뒤져서 스프링 빈에 등록함 스프링 빈은 스프링 컨테이너에 싱글..