이제 천천히 스프링 공부를 다시 시작하려한다. 물론 스프링 공부는 사실 어느정도 이미 진행했었다. 한이음 프로젝트를 진행하며 사용한 프레임워크가 스프링이었기 때문이다. 하지만 다시 이렇게 처음부터 복습을 하는 이유는 그때는 너무 실전 위주로 그때 그때 필요한 것만 급하
Service - DAO 구조에서 만약 DAO를 수정해야할 일이 있다고 가정해보겠습니다. 그럴 경우 DAO를 수정하고 추가적으로 Service까지 수정할 소요가 생깁니다. 이렇게 하나를 고쳤을 때 그와 연관된 다른 코드까지 수정해야할 경우를 결합력이 강하다고 합니다.
DI란 Dependency Injection, 즉 의존성 주입이라는 뜻입니다. 하지만 바로 느낄 수 있듯이 말이 너무 어렵습니다. DI는 부품 조립이라고 이해하면 좀 더 쉽게 접근할 수 있습니다. DI의 예를 들어 보겠습니다.위 두가지 모두 DI의 예입니다. 이렇게 D
IOC는 간단히 설명하면 Dependency를 담고있는 Container라고 생가하면 됩니다. 근데 놀랍게도 이 IOC 컨테이너는 부품들을 담을 뿐만 아니라 설정해준 것처럼 조립까지 해줍니다. 근데 왜 굳이 IOC 컨테이너라는 이름이 붙었을까요? 그 이유는 일반 일체형
DI를 알아봤으니 DI에 대한 예제를 한번 보겠습니다. 밑에 코드에서 exam이라는 객체를 InlineExamConsole객체에 조립하고 있습니다. 이러한 과정을 DI라고 합니다. 이때 Inline으로 출력하는 것이 아닌 Grid 형식의 콘솔이 필요할 경우 exam을
Spring Bean Configuraion File을 선택해서 xml형태로 DI 명세서를 작성할 수 있습니다.밑에 명세서는이 코드를 DI 명세서를 작성해서 구현한 것 입니다.이때 property에서 name은 setExam이 존재할 때 set을 빼고 앞에 글자를 소문
앞에서 DI명세서를 작성할 때 bean태그 안에 property를 이용해서 작성해주었다. 그리고 이 경우 미리 작성해둔 set 함수가 실행되서 DI가 이루어진다. 하지만 이렇게 set 함수만 사용할 수 있는 것은 아니다. DI명세서를 이용해서 생성자 DI를 할 수도 있
DI명세서를 이용해서 컬렉션 또한 생성할 수 있습니다.기본 예제 코드입니다. 위에 ArrayList객체를 생성하는 부분을 아래처럼 바꿔줄 수 있습니다.List examList = (List) context.getBean("examList"); // new ArrayLi
어노테이션 지금까지는 xml로 DI명세서를 작성했습니다. 하지만 xml로 DI명세서를 작성하는 것은 설정이 많아지면 많아질수록 직관성이 떨어지고 복잡한 일이 되었습니다. 그래서 어노테이션이 등장하였습니다. 어노테이션은 설정파일을 따로 수정하는 것이 아닌 소스코드와 함
지금까지는 xml을 이용해서 객체를 생성해왔습니다. 하지만 어노테이션을 이용해서도 객체를 생성할 수 있습니다. 그렇게 할경우 훨씬 직관적인 코드를 작성할 수 있고, xml파일 자체도 깔끔해집니다. 어노테이션을 이용해서 객체를 만드려면 @Component를 사용하면 됩니
지금까지는 XML Configuration 방식을 사용했다면 이제 Java Configuration로 바꿀 것입니다. 일단 해당 소스 코드가 자바 설정 파일이라는 것을 알려주기위해 @Configuration 어노테이션을 사용해줍니다. 또한 아래 태그를 대체 하기위해 @
AOP란 Aspect Oriented Programming란 관점 지향 프로그래밍을 뜻합니다. 이 관점 지향 프로그래밍은 다양한 로직이 있을 때 이것들을 횡단 관심사 기준을 나누고 중복되는 로직들을 분리해주는 것입니다. 가장 대표적인 예로는 transaction 관리가
xml을 이용해서 aop설정을 할 수 있습니다. 우선 spring.io의 xml을 참고해서 넣어준 뒤, maven에 의존성을 추가해줍니다. 그리고 우선 bean을 만들어주고, aspect를 만들고 만든 bean의 ref를 추가합니다. 마지막으로 그 안에 pointcut
AOP를 이용해서 계속해서 반복되는 로직을 처리할 수 있습니다. 가장 적절한 예시는 transaction 처리입니다. 일반적인 transaction처리를 살펴보겠습니다.이 코드는 transaction 처리를 사용하는 모든 로직에 붙어있게 될 것입니다. 하지만 aop를