목록백엔드 (25)
프로그래밍 끄적끄적
🌳 Filter 종류 ▪ includeFilters: 조건을 만족하는 클래스만 스캔한다. ▪ excludeFilters: 조건을 만족하는 클래스는 제외하고 스캔한다. - 예문 1 2 3 4 @ComponentScan( includeFilters = @ComponentScan.Filter(type= FilterType.ANNOTATION, classes=MyIncludeComponent.class), excludeFilters = @ComponentScan.Filter(type=FilterType.ANNOTATION, classes=MyExcludeComponent.class) ) Colored by Color Scripter cs 🌳 FilterType 옵션 ▪ ANNOTATION: 디폴트값이며, 어노테..
🌳 컴포넌트 스캔 (@ComponentScan) 컴포넌트 스캔은 @Component 와 @Service, @Repository, @Controller 어노테이션이 설정된 클래스들을 자동으로 스캔하여 스프링 빈으로 등록해준다. 이때 이를 설정하는 파일인 @Configuration도 등록 대상이 되는데, 이때 테스트를 위해 만들었던, 그리고 실습을 위해 작성했던 다른 @Configuration 클래스들도 모두 등록될 수 있기 때문에 excludeFilters 설정을 이용하여 제외해준다. (Config 파일들은 AnnotationConfigApplicationContext 객체를 통해 개발자가 직접 코드에 삽입하기 때문에 자동 등록하지 않아도 문제가 생기지 않는다.) --> 일반적으로는 이렇게 해 줄 필요 없..
싱글톤 패턴을 적용하면 필요할 때마다 객체를 생성하는 것 대신, 이미 만들어진 객체를 공유해서 효율적으로 사용할 수 있다. 🌳 싱글톤 문제점 싱글톤 패턴을 구현하는 코드 자체가 많이 들어간다. 의존관계상 클라이언트가 구체 클래스에 의존한다.(DIP 위반) 클라이언트가 구체 클래스에 의존해서 OCP를 위반할 가능성이 높다. 테스트하기 어렵다. 내부 속성을 변경하거나 초기화하기 어렵다. private 생성자로 자식 클래스를 만들기 어렵다. 결론적으로 유연성이 떨어진다. 안티패턴으로 불리기도 한다. 🌳 싱글톤 컨테이너 싱글톤 컨테이너는 싱글톤 패턴의 문제점을 해결하면서, 객체 인스턴스를 싱글톤으로 관리한다. 🌳 싱글톤 주의점 무상태로 설계해야 한다. 상태를 유지하게(공유 변수(=싱글톤의 필드)를 변경) 설계하..
🌳 BeanDefinition 이란? BeanDefinition은 스프링 빈 설정 메타 정보로, 빈마다 각각 하나의 메타 정보가 생성된다. (ApplicationContext 내부에 있는 XXXBeanDefinitionReader를 통해 설정 파일을 읽고 BeanDefinition을 생성한다.) 스프링 컨테이너는 이러한 메타 정보를 기반으로 스프링 빈을 생성한다.
🌳 스프링 컨테이너 생성 절차 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..