목록분류 전체보기 (37)
프로그래밍 끄적끄적
🌳 스프링 컨테이너 생성 절차 1) 스프링 빈을 스프링 컨테이너에 등록한다. (해당 객체 생성) 2) 스프링 빈 의존관계를 주입한다. (DI) 🌳 스프링 컨테이너 상속 관계 BeanFactory
🌳 스프링 빈이란? 빈(Bean)은 스프링 IoC 컨테이너가 관리하는 자바 객체를 말한다. IoC 컨테이너에 의해 인스턴스화, 관리, 생성되며 보통 싱글톤으로 존재한다. 🌳 스프링 빈 이름 정의 스프링 빈 이름은 대체로 메서드 이름을 사용하며 @Bean(name="[빈 이름]")으로 직접 명시해 줄 수도 있다. 이때 주의할 점은 동일한 빈 이름이 있어서는 안 된다는 것이다. 🌳 스프링 빈 출력하기 [ApplicationContext].getBeanDefinitionNames(): 스프링에 등록된 모든 빈 이름을 조회 [ApplicationContext].getBean([빈 이름], [빈 타입]): 빈 이름과 타입으로 빈 객체를 조회 ▪ 구현체 타입으로 조회해도 되지만, 구현에 의존하는 것은 좋지 않음 [..
도구창 열기: Alt+1 다른 코드로 이동(구현->선언->구현): Ctrl+B 선택 영역 확대/축소: Ctrl+W / Ctrl+Shift+W 주석 처리: Ctrl+/ 자동완성: Ctrl+Shift+Enter rename: Shift+F6 메소드 추출: Ctrl+Alt+M 변수 추출: Ctrl+Alt+V 생성자,getter,setter: Ctrl+Insert 테스트 생성: Ctrl+Shift+T 이전 실행 반복: Shift+F10
* 홈화면 홈화면을 보여주기 위한 HomeController와 템플릿에 home.html을 만든다. 초기 홈화면에서는 회원가입과 회원목록으로 넘어갈 수 있는 링크를 보여준다. 컨트롤러가 있는지 먼저 탐색한 후에 없으면 static 파일을 찾기 때문에 index.html이 아닌 home.html이 보여지게 된다. * 등록 등록 기능을 구현하기 위해 MemberController에 "/create/new"에 대한 컨트롤러인 createForm()을 만든다. 1 2 3 4 @GetMapping("/members/new") public String createForm() { return "members/createMemberForm"; } Colored by Color Scripter cs 그리고 템플릿에 me..
* annotation으로 스프링 빈 등록하기 @Controller annotaion을 명시하면 해당 컨트롤러 객체를 만들어서 스프링 컨테이너가 관리한다. 굳이 컨트롤러마다 만들지 않아도 되는 객체(ex.서비스)는 스프링 컨테이너에 하나만 저장해놓고 공유할 수 있다. @Autowired annotation을 통해 이러한 구현이 가능한데, 스프링이 해당 객체를 인지하기 위해(=스프링 빈으로 등록하기 위해) @Controller, @Service, @Repository annotation을 사용해야 한다. 생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어준다. 이렇게 객체 의존관계를 외부에서 넣어주는 것을 DI(Dependency Injection)이라고 한다. @..
테스트는 애플리케이션 빌드에 포함되지 않으므로 한글로 작성해도 된다. 테스트를 작성할 때 //given //when //then으로 나누어서 짜는 습관을 들이자. 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 // 테스트 생성 단축키: ctrl + shift + T // 이전 실행 반복 단축키: shift + f10 class MemberServiceTest { MemberService memberService; MemoryMe..
서비스는 핵심 비즈니스 로직을 구현하는 부분으로 리포지토리보다 조금 더 비즈니스적인 용어로 작성한다. 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 29 30 31 32 33 34 public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); /** * 회원 가입 */ public Long join(Member member) { //메소드 추출 단축키: ctrl + alt + M //같은 이름이 있는 중복 회원 X validateDuplicateMember(member); //중복 회원 ..
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 public class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); //@AfterEach: @Test 가 끝날 때마다 진행 @AfterEach public void afterEach() { repository.clearStore(); //테스트가 끝날 때마다 저장소를 지움 } @Test public ..