일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- selectoptions
- selectedIndex
- 파일질라다운로드
- 1521
- 파일질라설치
- push오류
- hide
- slideUp
- 증가값
- index %
- Math.ceil()
- SUB함수
- removeClass
- addClass
- toFixed()
- Excel
- 소스트리인증실패
- Math.round()
- FileZilla다운로드
- 파일질라설치오류
- calc.minus
- Git
- ctrl+/
- is_check
- FileZilla설치
- excel중복체크
- Parent
- Math.floor()
- calc.plus
- 주석이 먹히지 않을 때
- Today
- Total
잡동사니에도 사랑을
[21.11.10] 본문
[문제3]
Project : chapter02 / chapter02_SpringMaven
Package : sample05
Class : HelloSpring.java
Interface : SungJuk.java
추상메소드 : public void execute();
아래의 4개의 클래스는 Setter Injection
Class : SungJukInput.java
SungJukOutput.java
SungJukModify.java
SungJukDelete.java
Class : SungJukDTO2.java
name, kor, eng, math, tot, avg (같은 이름은 입력하지 마시오)
List list = new ArrayList() 사용하시오.
[chapter02]
List는 applicationContext.xml에서 빈으로 생성
[chapter02_SpringMaven]
- List는 @Component / spring.conf 에서 생성해서 리턴
[실행]
menu() - HelloSpring.java
**************
1. 입력
2. 출력
3. 수정
4. 삭제
5. 끝
**************
1번인 경우 - SungJukInput.java
이름 입력 :
국어점수 입력 :
영어점수 입력 :
수학점수 입력 :
xxx님의 데이터를 입력 하였습니다
2번인 경우 - SungJukOutput.java
이름국어영어수학총점평균
홍길동9510097xxxxx.xx
또치908575xxxxx.xx
3번인 경우 - SungJukModify.java
수정할 이름 입력 : 코난
찾고자하는 이름이 없습니다
수정할 이름 입력 : 홍길동
이름국어영어수학총점평균
홍길동9510097xxxxx.xx
국어점수 입력 :
영어점수 입력 :
수학점수 입력 :
xxx님의 데이터를 수정 하였습니다
4번인 경우 - SungJukDelete.java
삭제할 이름 입력 : 코난
찾고자하는 이름이 없습니다
xxx님의 데이터를 삭제 하였습니다
1. xml
2. annotation
3. spring configuration
스피링 자체는 인터페이스 설계로 들어가는데, 메인은 각 프로젝트 당 하나씩만 들어가는 게 맞다.
하지만 이번 예제는 HelloSpring을 뉴 시키지 않는다.
////////applicationContext.xml
<!-- 중략 -->
<!-- sample05 -->
<!-- main -->
<bean id="helloSpring" class="sample05.HelloSpring"></bean>
<bean id="sungJukInput" class="sample05.SungJukInput">
<property name="sungJukDTO2" ref="sungJukDTO2"></property>
</bean>
<!--
Input을 통해서 DTO를 불러오고 싶은데,
생성자를 통해서 가져오는 방법1 setter를 통해서 가져오는 방법2 두 가지가 있다
Input.java에서 DTO2 setter를 잡아준 뒤 xml에서 명시한다
-->
<bean id="sungJukOutput" class="sample05.SungJukOutput"></bean>
<bean id="sungJukDTO2" class="sample05.SungJukDTO2"></bean>
</beans>
////////HelloSpring.java
package sample05;
import java.util.Scanner;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class HelloSpring {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
HelloSpring helloSpring = (HelloSpring) context.getBean("helloSpring");
helloSpring.menu(context);
System.out.println("프로그램을 종료합니다");
}
private void menu(ApplicationContext context) { // // xml에 있는 값을 불러오려면? context가 필요하다
Scanner scan = new Scanner(System.in);
int num;
SungJuk sungJuk = null;
while (true) {
System.out.println("*************");
System.out.println(" 1. 입력");
System.out.println(" 2. 출력");
System.out.println(" 3. 수정");
System.out.println(" 4. 삭제");
System.out.println(" 5. 끝");
System.out.println("*************");
System.out.print("입력 : ");
num = scan.nextInt();
if (num == 5)
break;
if (num == 1) {
sungJuk = (SungJuk) context.getBean("sungJukInput");
// 1번을 누르면 객체가 생성이 되고 sungJuk.execute로 빠져나간다.
// 객체 주소값이 input으로 들어가야함
// sungJuk.execute();
} else if (num == 2) {
sungJuk = new SungJukOutput();
// 클래스 양이 적을 때 1:1 관계를 하지만,
// 클래스 양이 많을 때는 부모와 자식 관계, 다형성의 관계로 잡아야 한다.
// sungJuk.execute(); - 동일한 문장이 위에도 나온다. 두번 써줄 필요 없이 아래로 밀어주자.
}
sungJuk.execute(); // initialize가 되지 않았다는 에러가 뜨니, 위에서 null값을 넣어주자
// 왜 initialize를 해주는 걸까? garbage값을 처리해주기 위해
} // while
}
}
////////SungJukOutput.java
package sample05;
public class SungJukOutput implements SungJuk {
@Override
public void execute() {
}
}
////////SungJukInput.java
package sample05;
import java.util.Scanner;
import lombok.Setter;
public class SungJukInput implements SungJuk {
@Setter
private SungJukDTO2 sungJukDTO2;
// 아래의 내용을 주석거는 대신 Setter를 annotation해준다.
/*
* public void setSungJukDTO2(SungJukDTO2 sungJukDTO2) { this.sungJukDTO2 =
* sungJukDTO2; }
*/
@Override
public void execute() {
Scanner scan = new Scanner(System.in);
System.out.println("이름 입력 : ");
String name = scan.next();
System.out.println("국어 입력 : ");
int kor = scan.nextInt();
System.out.println("영어 입력 : ");
int eng = scan.nextInt();
System.out.println("수학 입력 : ");
int math = scan.nextInt();
int tot = kor + eng + math;
double avg = tot / 3.0;
// dto클래스에 보관하려고 한다.
SungJukDTO2 sungJukDTO2 = new SungJukDTO2();
}
}
////////SungJukDTO2.java
package sample05;
import lombok.Setter;
@Setter
// Setter Getter Generate해줘도 무방하다
public class SungJukDTO2 {
private String name;
private int kor, eng, math, tot;
private double avg;
public String toString() {
return name + "\t" + kor + "\t" + eng + "\t" + math + "\t" + tot + "\t" + String.format("%.2f", avg);
}
}
'SPRING' 카테고리의 다른 글
[21.11.11] (sample05 - chapter02_SpringMaven) (0) | 2021.11.11 |
---|---|
[21.11.11] (sample03 - chapter02_SpringMaven) (0) | 2021.11.11 |
[21.11.09] (Chapter02 - sample02) (0) | 2021.11.09 |
[21.11.09] (Chapter02 - sample02 / 03 / 04) (0) | 2021.11.09 |
[21.11.08] (Chapter02) (0) | 2021.11.08 |