강의 (130) 썸네일형 리스트형 빈 조회하기 빈 조회할 일은 거의 없을 것이다. 여기서 알아 둘 것은 상속 관계에서 부모 타입의 빈을 조회하면, 자식 타입도 함께 조회한다는 것만 알아두고 넘어가자 빈 조회 컨테이너에 등록된 모든 빈 조회 스프링 컨테이너에 실제 스프링 빈들이 잘 등록 되었는지 확인해보자. class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("모든 빈 출력하기") void findAllBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (St.. 프레임 워크 vs 라이브러리 내가 작성한 코드를 제어하고, 대신 실행한다면 그것은 프레임워크이다. (JUnit) 내가 작성한 코드가 직접 제어를 한다면 그것은 라이브러리이다. DI와 IoC를 활용하여 OCP, DIP를 지켜보자 개념 제어의 역전 (IoC) 제어의 역전이라는 개념은 프레임 워크같은 것이 대신 호출해주는 것입니다. 프로그램의 흐름을 직접 제어하는 것이 아니라 외부에서 관리해주는 것을 제어의 역전(IoC)라고 합니다. 의존관계 주입 (DI) 애플리케이션 '실행 시점(런타임)'에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것을 '의존관계 주입'이라 한다. 코드로 확인하는 개념 아래와 같은 할인정책을 구현한다고 생각해보겠습니다. 보통 할인 정책을 구현하면 아래와 같이 코드를 작성할 것입니다. public class OrderServiceImpl implements OrderService { private final MemberRepository memberRep.. 객체 지향 설계의 5가지 원칙 좋은 객체 지향 설계의 5가지 원칙(SOLID) 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP: 단일 책임원칙 OCP: 개방 폐쇄 원칙 (가장 중요) SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. - 클 수 있고 작을 수 있다. - 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것 - 예) UI 변경, 객체의 생성과 사용을 분리 OCP: 개방 폐쇄 원칙 (가장 중요) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 다형성을 활용해보자 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현 지금까지 배운 역할과 구현의.. 객체지향과 다형성 핵심 컨셉은? 로드 존슨의 3만 코드에서 시작 스프링은 자바 언어 기반의 프레임워크 자바 언어의 가장 큰 특징 - 객체 지향 언어 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 객체지향 프로그래밍을 잘 할 수 있도록 도와주는 도구 좋은 객체 지향 프로그래밍? 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 추상화, 캡슐화, 상속, 다형성의 특징을 가지고 있지만 그 중에서 가장 중요한 것을 고르자면 '다형성' 이라고 할 수 있다. 다형성에 대해서 알아보도록 하겠습니다. 다형성의 실세계 비유 객체지향 프로그래밍에서 다형성이 가장 중요하다. 이해를 쉽.. AOP AOP란 AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불립니다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것입니다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말합니다. 개념으로는 이해가 안 될 수 있으니 어떤 경우에 어떻게 사용하는지를 알아보도록 하겠습니다. AOP 사용 예제 모든 메서드의 작업 시간을 측정하고 싶은 상황이라고 가정해보겠습니다. 모든 메서드가 시작되는 부분에 시간을 확인하는 코드와, 메서드가 끝나는 부분에 시간을 확인하는 코드를 입력하고 끝나는 시간에서 시작 시간을 빼서 작업 시간을 확인할 수 있습니다. 이런 번거로운 일.. 회원 Controller 세팅 Controller 세팅 회원 가입, 회원 등록, 회원 조회 기능을 각각 구현하였습니다. @Controller public class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; } // 회원가입 화면으로 이동 @GetMapping("/members/new") public String createForm(){ return "members/createMemberForm"; } // 회원 등록 @PostMapping("/members/new") public Str.. 스프링 빈을 등록하는 2가지 방법 스프링 빈을 등록하는 방법은 2가지가 존재합니다. 1. 컴포넌트 스캔과 자동 의존관계 설정 2. 자바 코드로 직접 스프링 빈 등록하기 이 2가지 방법에 대하여 각각 알아보도록 하겠습니다. 컴포넌트 스캔과 자동 의존관계 설정 @Component 애노테이션이 있으면 스프링 빈으로 자동 등록됩니다. @Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트 스캔 때문입니다. @Component 를 포함하는 다음 애노테이션도 스프링 빈으로 자동 등록됩니다. @Controller @Service @Repository 자바 코드로 직접 스프링 빈 등록하기 이때까지 @Service, @Repository, @Autowired annotation을 이용하여 자동으로 빈을 등록했다면 이번에는 직접 등록해.. 이전 1 ··· 7 8 9 10 11 12 13 ··· 17 다음