코딩항해기
[과제/Spring] Spring 기초연습 (워치 만들기) 본문
[intellij]
두 가지의 워치를 만들어 전원을 키고 끄는 메서드를 구현해보자
- 결합도를 낮출 것
- Spring 컨테이너를 활용할 것
- 메인메서드 매개변수 String[] args를 활용할 것
- int-method를 설정할 것
- scope를 설정할 것 (기본 singleton)
- lazy-init를 설정할 것
먼저 결합도를 낮추기 위해 인터페이스를 활용해 오버라이딩 할 수 있다.
인터페이스를 활용해 구현부를 강제하면 업캐스팅해 사용할 수도 있고 메서드 시그니처를 통일 할 수 있다.
워치 인터페이스
package test;
public interface Watch {
void turnOn();
void turnOff();
}
사과워치
package test;
public class AppleWatch implements Watch {
//생성자
public AppleWatch(){
System.out.println("AppleWatch");
}
//전원 온
@Override
public void turnOn() {
System.out.println("Apple watch is on");
}
//전원 오프
@Override
public void turnOff() {
System.out.println("Apple watch is off");
}
}
우주워치
package test;
public class GalaxyWatch implements Watch {
//생성자
public GalaxyWatch(){
System.out.println("Galaxy Watch 생성자 실행");
}
//init으로 초기화하기도 한다 (생성자가 없는 종류들의 경우)
void initWatch(){
System.out.println("init을 이용한 필드값 초기화");
}
//전원 온
@Override
public void turnOn() {
System.out.println("Galaxy Watch is ON");
}
//전원 오프
@Override
public void turnOff() {
System.out.println("Galaxy Watch is OFF");
}
}
Client
package test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class Client {
public static void main(String[] args) {
//Spring 컨테이너 객체 생성
AbstractApplicationContext factory = new GenericXmlApplicationContext("applicationContext.xml");
//매개변수로 받아온 첫 번째 워치
Watch watch = (Watch) factory.getBean(args[0]);
//전원 온 오프
watch.turnOn();
watch.turnOff();
//매개변수로 받아온 두 번째 워치
Watch watch2 = (Watch) factory.getBean(args[1]);
//전원 온 오프
watch2.turnOn();
watch2.turnOff();
}
}
Spring 컨테이너의 설정을 작성하는 applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="test.AppleWatch" id="appleWatch" scope="singleton" />
<bean class="test.GalaxyWatch" id="galaxyWatch" scope="singleton" lazy-init="true" init-method="initWatch" />
</beans>
Configurations 설정
실행
'problem solving > 과제&실습 코딩' 카테고리의 다른 글
[과제/Spring] board insert 구현하기 (0) | 2024.10.07 |
---|---|
[과제/Spring] Spring Service, ServiceImpl 연습 (0) | 2024.10.05 |
[연습] 커뮤니티 사이트로 JSP 프로젝트 V, C파트 연습 - V 기초 (1) | 2024.09.15 |
[연습] 커뮤니티 사이트로 JSP 프로젝트 V, C파트 연습 - 사전설계 (0) | 2024.09.14 |
[실습/JS] Ajax로 JSON 데이터 불러오기, id 중복검사하기 (0) | 2024.08.22 |