본문 바로가기

Spring 프레임워크54

IoC 로 객체를 호출 하기 (어노테이션 & .xml) TV 인터페이스를 구현한, SamsungTV 클래스와, LgTV 클래스가 있고, RemoteControl 인터페이스를 구현한, SamsungRC 클래스와, LgRC 클래스가 있다. SamsungTV 는 TV 인터페이스를 구현 했기에, 추상 메서드를 구현 받은 상황 이고, 설계상, channelUp과, volumeDown 은, 리모콘을 통해 기능을 수행 할 수 있다. 그래서, 위와 같이, RemoteControl 인터페이스가 멤버로 (멤버변수) 선언 되어 있다. 이는, 의존 관계가 발생 했다고 한다. 이렇게 의존 관계가 발생 했을 때, 의존 주입을 해야 한다. 기존에, 의존 주입을 하는 방법으로는, 생성자를 통해 객체를 주입 하거나, 또는 setter을 통해 주입 하는 방법 이였다. 생성자를 통해 객체를 .. 2023. 8. 1.
Spring 프레임워크 기본 개념 (개요) 2 1. ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 1) 의존성 (Dependency), 의존 관계 예시) 갤럭시폰 음량 조절을 하려면 갤럭시워치를 통해 해야 한다고 가정 해보자. 그렇게 되면, 갤럭시폰 클래스 내부에 갤럭시워치가 멤버로 존재 하게 된다. 또한, 갤럭시폰은 갤럭시워치 객체 없이는 메서드 수행이 불가능 하다. 즉, 의존 관계가 되었다 ! 2) 의존주입 (DI, Dependency Injection) == 의존성주입 갤럭시폰은 갤럭시워치를 주입 받아야 한다. 즉, new 키워드를 통해 초기화를 해야 한다. (생성자 호출을 해야 한다 ~) >> 생성자를 주입 시키던가 ! (자바 때 이렇게 했다) >> setter을 주입 시키던가 ! (JSP 때 이렇게 했다) Spring은 무슨 방법으.. 2023. 8. 1.
에러 테스트 같은 자료형의 같은 참조변수면 already used in this element 에러. 클래스에 인자 3개짜리 생성자가 없는데 인자 3개 해주면, No constructor with n arguments defined in class ~ 에러. 2023. 8. 1.
예제 04 (.xml 파일 기타 개념) .xml 파일 내부 코드가 위와 같이 작성 되어 있다. 객체가 어떤 순서대로 생성될까 ? 알아보기 위해 각 클래스 내부에 log를 찍어 보았다. 돌려보면, Console 결과창은 아래와 같이 나오게 된다. 위에서, 분명 갤럭시워치는 갤럭시폰 아래에 객체 생성 코드를 작성했었는데, 제일 먼저 갤럭시워치가 객체화 되는 로그를 확인 할 수 있다. 갤럭시폰의 인자 2개짜리 생성자를 호출 해야 하는 상황이라, .xml 파일이 똑똑하게 알아서, 갤럭시워치를 먼저 객체화 해준것을 확인 할 수 있다. 그외 참고 init-method destroy-method lazy-init 얘는 다시 정리 하기. 2023. 7. 31.
예제 03 ( .xml 파일을 사용하여 객체를 생성 하기 ) Phone 인터페이스를 구현한 GalaxyPhone 클래스에 갤럭시워치 타입의 갤럭시워치를 멤버변수로 추가 해보자. 그리고, 갤럭시폰의 볼륨 조절은 갤럭시워치를 통해서 할 수 있는 설계로 가정해보자. 갤럭시워치 클래스 내부는 아래와 같다. 그러면, 아래와 같이 작성 하게 된다. 그런데, 이것을 컴파일 하게 되면, NPE가 발생 하게 된다. 당연하게도, 저 두 아이를 객체화 해주지 않았기 때문이다. 주체가 galaxyWatch 이고, 주체로 메서드를 호출 하기 때문에, 인스턴스 메서드 이며, 주체를 new 키워드로 인스턴스화 하지 않았기에, null로 메서드를 호출하니, 발생하는 NPE 에러인 것이다. 따라서, 위와 같이 코드를 삽입해주면, 이렇게 해결이 되는 모습을 확인 할 수 있다. 하지만, new 키.. 2023. 7. 31.
예제 02 [ Factory 패턴 ] (BeanFactory) 예제 01에서, "new 키워드를 거의 사용 하지 않는 방법은 없을까 ?" 에 대해 알아보았다. 바로, Factory 패턴 이다. Factory 패턴 이란 ? 객체를 생성하는 코드를 캡슐화 한다. == new 키워드와 관련된 코드를 은닉 (Hiding) 사용자로부터 필요한 객체의 이름을 받아, 객체 자체를 반환하는 로직을 의미 한다. 코드를 단 한글자도 변경 하지 않아도, 결과가 (화면) 달라진다 ! 아래와 같이 Factory 클래스를 생성 한다. getBean 메서드의 시그니쳐를 보면, output으로 Object 타입인 것을 확인 할 수 있다. 모든 타입의 객체를 다 반환 하겠다는 의미 이다. 이렇게 어쩌구Factory 클래스를 생성 하면, Client.java 클래스의 코드는 아래와 같이 작성 할 .. 2023. 7. 31.
예제 01 (new 키워드의 높은 결합도) 아래와 같이, 갤럭시폰 클래스가 있다고 가정 해보자. 또한, 아이폰 클래스가 있다고 해보자. 사용자가 만약에, 갤럭시폰을 사고 싶거나 이용하려면 어떻게 해야할까 ? 위와 같이, new 키워드를 사용하여, 객체화를 하고, galaxyPhone 이라는 참조변수를 통해, 원하는 기능을 수행하는 메서드를 호출 하면 된다. 근데 ! 만약에, 사용자가 아이폰도 구매해서 사용 하고 싶으면 어떻게 해야할까 ? 위와 같이, 데이터 타입을 (클래스명) IPhone 으로 변경 하면 가능할까 ? 당연히 아니다. new 키워드 뒤의 코드도 변경해 줘야 한다. (객체화를 할 때, (디폴트) 생성자를 호출 ~) 그래서 아래와 같이, new 키워드 뒤의 코드도 변경해 주었다. 이제 아이폰을 구매 해서 사용 할 수 있을까 ? 구매는 .. 2023. 7. 31.
Spring 프레임워크 기본 개념 (개요) [ Spring 프레임워크 개요 ] (만든사람 왈 : 개발자에게 봄이 왔어,, 해서 Spring 이라고,,) 1. SpringBoot >> 스프링을 편리하게 사용할 수 있도록 기능을 지원 해주는 기술. 1) 단독으로 실행할 수 있는 스프링 어플리케이션을 쉽게 생성 2) Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치 하지 않아도 된다 3) 손쉬운 빌드 구성을 위한 starter 종속성을 제공 한다 4) 스프링과 3rd party (외부) 라이브러리를 자동 구성 한다 5) 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능을 제공 한다 6) 관례에 의한 간결한 설정을 한다 2. 프레임워크란 ? == 골격 예시) 리모콘, 인형 개발자들끼리의 기준이며, 유지 보수 용이의 장점을 지니게 된다... 2023. 7. 31.
Spring 프레임워크 설치 및 기본 세팅 [순서] 1. Spring 플러그인 설치 2. 프로젝트 생성 (MVC 템플릿) 3. 프로젝트 설정 (Java, Tomcat) 4. 패키지, 폴더 정리 5. web.xml + pom.xml 설정 --------------------------------------------------------- [방법] 1. Help - Eclipse Marketplace 클릭. 2. spring 검색 - 첫번째 & 세번째 다운로드 Spring Tools 3 (Standalone Edition) 설치 먼저 하고 ! Spring Tools 3 Add-On for Spring Tools 설치 하기 ! Spring Tools 3 (Standalone Edition) 를 설치하면, 자동으로, Spring Tools 3 Add-.. 2023. 7. 31.