본문 바로가기

Spring|Spring-boot117

[spring] 의존 주입 Spring에서 의존이란 객체 간의 의존을 의미합니다. 즉 변경에 의해 객체들끼리 영향을 받는 관계를 의미할 수 있습니다. 의존하는 대상이 존재한다면 그 대상을 구하는 방법이 필요합니다. 1. 의존 객체를 직접 생성 public class MemberService { private MemberDao memberDao = new MemberDao(); public void regist(....) { ..... } } MemberService에서 MemberDao를 직접 생성하므로 MemberService 객체를 생성하는 순간에 MemberDao 객체도 함께 생성됩니다. 의존 객체를 직접 생성한다는 점에서 쉽고 간편하지만 유지보수 관점에서 문제가 발생합니다. 2.DI를 통한 의존 처리 의존하는 객체를 직접 .. 2020. 6. 17.
[spring] @Configuration @Configuration 애노테이션은 해당 클래스를 스프링 설정 클래스로 지정합니다. @Configuration public class AppContext { @Bean public Hello hi(){ Hello ho = new Hello(); ho.setHi(); return ho; } } 스프링은 객체를 생성하고 초기화하는 기능을 제공하는데 , 위의 코드는 한 개 객체를 생성하고 초기화하는 설정을 담고 있다. 스프링이 생성하는 객체를 빈(Bean) 객체라고 부르는데, 이 빈 객체에 대한 정보를 담고 있는 메서드가 hi() 메서드이다. @Bean 애노테이션을 메서드에 붙이면 해당 메서드가 생성한 객체를 스프링이 관리하는 빈 객체로 등록한다. 여기서 애노테이션을 붙인 메서드의 이름은 빈 객체를 구분할.. 2020. 6. 17.
[Spring] Dependency Injection (xml) DI를 하기 위해 간단한 예제를 사용합니다. package spring; public class Program { public static void main(String[] args) { /* 스프링에게 지시하는 방법으로 변경 * Exam exam = new NewExam(); ExamConsole console = new InlineExamConsole(); * console.setExam(exam); */ ExamConsole console = ?; console.print(); } } // new InlineExamConsole new GridExamConsole(exam) 이부분을 비워두고 대신 해줄수 있도록 spring의 도움을 받는다. //만약 Exam과 ExamConsole이 변경된다면? 코.. 2020. 6. 16.
[Spring] IoC 컨테이너 다음 용어인 IoC컨테이너입니다. 부품을 조립하기 위해선 우리는 부품을 spring에게 제공해주어야 합니다. 부품끼리 어떻게 연결되어있으며 어떠한 부품들이 있는지 알려주기 위해 xml. Annotation을 이용합니다. 우리가 부품을 제공하면 spring은 객체를 생성해서 IoC컨테이너에 담아놓습니다. 또한 미리 생성한 뒤 조립까지 해준 다음 담을 수 돼있습니다. 조립하는 과정을 잘 보면 작은 부품이 만들어지고 다음 부품을 만들고 결합시킵니다. 다음에 좀 더 큰 단위의 부품을 만들어서 조립하게 됩니다. 일체형인 경우 A객체가 만들어질 때 B객체가 만들어지고 B객체가 만들어질 때 C 객체가 만들어지는 순서입니다. 하지만 결합형으로 만들어진다면 그 반대입니다. D객체 만들어져 C의 결합되고 C가 만들어졌으면.. 2020. 6. 15.
[Spring] DI(Dependency Injection) Dependency Injection 의존성 주입 무슨 말인지 바로 알 수가 없습니다. 간단히 부품 조립이라고 생각을 해보겠습니다. Composition has a 일체형관계 class A { private B b; //여기서 b는 Dependency public A(){ b = new B(); } } Association has a 외부에 생성해 사용하는방식 조립형 class A { private B b; public A(){ } public void setB(B b){ this.b = b; } } 일반적으로 프로그램을 만들 때 부품을 느슨한 결합으로 만드는 경우가 많습니다. Association has a 방식은 A라는 기계가 있는데 B라는 부품을 생성해 장착해주어야 기능이 돌아간다고 합니다. 여기서.. 2020. 6. 15.
[Spring] 느슨한 결합력과 인터페이스 느슨한 결합력과 인터페이스의 역할 코드 수정을 없애고 DI를 위한 설정 만약 우리가 Data를 받아오는 Dao에서 로직이 변경됐다고 했을 경우 어떻게 클래스를 변경해야 할까? 변경된 코드를 덮어써야 할까? 덮어쓰게된다면 Service함수에서 영향을 받아 수정 범위가 늘어나지 않을까? private B1 b = new B1(); b.getData(); private B2 b = new B2(); b.getData(); service에서 B1클래스로 구현되어있는 상황에 B2로 변경한다는 것은 결합력이 높은 편입니다. 어떤 식으로 변경해야 결합력을 낮출 수 있을까요? private B b = new B1(); b.getData(); private B b = new B2(); b.getData(); 바로 인터페.. 2020. 6. 15.
[Spring] 소개 스프링 프레임워크는 어느 순간 자바 개발자에게 스프링이 훅 들어왔습니다. 왜 어느 순간 스프링이 다가오게 됐을까요? https://spring.io/ Spring makes Java simple. Level up your Java code and explore what Spring can do for you. spring.io 첫 번째 이유 Provides core support for dependency injection. transaction management web app, data access, messaging and more. 트랜잭션을 관리, 의존성 주입 중요한 기능입니다. 엔터프라이즈 애플리케이션을 만들 때 의존성 주입은 굉장히 중요했으며 트랜잭션을 관리해주는 것, 다오와 서비스라는 레이.. 2020. 6. 15.