[Spring Framework] Intro

박은지·2022년 3월 3일
0

Spring Framework

목록 보기
1/3

1. 주요 프로그램 설치

JDK

최신 버전 or 프로젝트에서 지정한 버전 (Java 8.0 이상 권장) 으로 설치한다.

Eclipse


2. 개발환경 구축

작업 폴더 생성 및 Eclipse 실행

폰트 설정

Window -> Preference -> General -> Appearance -> Colors and Fonts -> Basic -> Text Font

인코딩 설정

Window -> Preference -> General -> Workspace
하단의 Text file encoding에서 Other 선택 후 UTF-8로 설정한다. Apply and Close
이렇게 하면 OS와 실행환경을 가지지 않아 한글이 깨지는 현상을 방지할 수 있다.


3. 자바 프로젝트 만들기

자바 개발모드로 변경한다.
Window -> Perspective -> Open Perspective -> Java

Java Project 생성

File -> New -> Java Project

Main

Package 생성하기

src 폴더에서 마우스 우클릭 -> New -> Package

Class 생성하기

생성된 Package에서 마우스 우클릭 -> New -> Class

Beans

beans
Java bean들은 어떤 데이터를 관리하기 위한 목적으로 사용하거나, 어떤 유틸리티 성격(도구적인 성격)을 가진 Method를 포함한 Class들을 말한다.

Package 생성하기

src 폴더에서 마우스 우클릭 -> New -> Package

Class 생성하기

생성된 Package에서 마우스 우클릭 -> New -> Class

// HelloWorldEn.java

package kr.co.softcampus.beans;

public class HelloWorldEn {

	public void sayHello() {
		System.out.println("Hello~~~!");
	}
}

// MainClass.java

package kr.co.softcampus.main;

import kr.co.softcampus.beans.HelloWorldEn;

public class MainClass {

	public static void main(String[] args) {
		// HelloWorldEn 객체 생성
		// 참조변수_타입  참조변수_이름 = new 클래스명();
		
		HelloWorldEn hello1 = new HelloWorldEn();
		callMethod(hello1);
		
		HelloWorldEn hello2 = new HelloWorldEn();
		callMethod(hello2);
	}
	
	public static void callMethod(HelloWorldEn hello) {
		hello.sayHello();
	}

}

< 자바 프로젝트의 문제점 >
만약에 HelloWorldEn 클래스가 아니라 HelloWorldKo 클래스를 변경해야 한다고 가정해보자.
기존에 HelloWorldEn 클래스가 사용된 모든 Java파일을 열어 HelloWorldKo 클래스로 일일이 수정해 주어야 한다는 불편함이 있다.

// HelloWorldKo.java

package kr.co.softcampus.beans;

public class HelloWorldKo {
	
	public void sayHello() {
		System.out.println("안녕하세요!");
	}

}

// MainClass.java

package kr.co.softcampus.main;

import kr.co.softcampus.beans.HelloWorldEn;
import kr.co.softcampus.beans.HelloWorldKo;

public class MainClass {

	public static void main(String[] args) {
		// HelloWorldEn 객체 생성
		// 참조변수_타입  참조변수_이름 = new 클래스명();
		
		HelloWorldKo hello1 = new HelloWorldKo();
		callMethod(hello1);
		
		HelloWorldKo hello2 = new HelloWorldKo();
		callMethod(hello2);
	}
	
	public static void callMethod(HelloWorldKo hello) {
		hello.sayHello();
	}

}

이렇게 Java 프로젝트에서 Class가 변경되면 객체 생성 부분과 참조변수 선언 부분 모두를 수정해주어야 한다.


4. 다형성

다형성 개념을 이용해서 위에서 살펴보았던 자바 프로젝트의 불편함을 해소해 보자.

자바에서의 모든 객체는 부모 클래스형 참조변수나 구현한 인터페이스 변수에 담을 수 있다.
이러한 참조변수를 통해 메소드를 호출하면 오버라이딩된 메소드가 호출된다.

개념

다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있음을 의미한다.
자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있다.

Java Project 생성

File -> New -> Java Project

Main

위에서 샆펴 본 내용과 동일하므로 위의 내용을 참고한다.

Package 생성하기

src 폴더에서 마우스 우클릭 -> New -> Package

Class 생성하기

생성된 Package에서 마우스 우클릭 -> New -> Class

Beans

Package 생성하기

File -> New -> Java Project

Interface 생성하기

생성된 Package에서 마우스 우클릭 -> New -> Interface

// HelloWorld.java

package kr.co.softcampus.beans;

/* HelloWorld 인터페이스를 구현하게 되면 추상메소드인 sayHello 메소드를 반드시 구현해야 한다. 
 * 인터페이스 타입인 HelloWorld 타입의 참조변수로 sayHello를 호출하면
 * 이 인터페이스(HelloWorld)를 구현한 클래스에서 오버라이딩한 메소드로 호출할 수 있다.*/

public interface HelloWorld {
	
	// 추상메소드
	public void sayHello();

}

Class 생성하기

// HelloWorldEn.java

package kr.co.softcampus.beans;

public class HelloWorldEn implements HelloWorld {
	
	@Override
	public void sayHello() {
		System.out.println("Hello~~~!");
	}
}

// MainClass.java

package kr.co.softcampus.main;

import kr.co.softcampus.beans.HelloWorld;
import kr.co.softcampus.beans.HelloWorldEn;

public class MainClass {

	public static void main(String[] args) {
		// HelloWorld 타입의 HelloWorldEn 객체 생성
		HelloWorld hello1 = new HelloWorldEn();
		callMethod(hello1);
		
		HelloWorld hello2 = new HelloWorldEn();
		callMethod(hello2);
	}
	
	public static void callMethod(HelloWorld hello) {
		// 여기서 sayHello 메소드는 HelloWorld 인터페이스 안에 존재하는 sayHello 추상메소드를 오버라이딩한 메소드
		hello.sayHello();
	}

}

다형성 개념을 이용해서 HelloWorldEn 클래스를 HelloWorldKo 객체로 변경해보자.
// HelloWorldKo.java
다음은 HelloWorldEn과 구조는 완전하게 동일하고 출력값만 다른 HelloWorldKo 클래스이다.

package kr.co.softcampus.beans;

public class HelloWorldKo implements HelloWorld{

	@Override
	public void sayHello() {
		System.out.println("안녕하세요!");
	}
}

// MainClass.java
MainClass에서는 Class를 가지고 객체를 생성하는 부분만 수정해주면 된다.
참조변수 선언 부분은 수정하지 않아도 된다.

package kr.co.softcampus.main;

import kr.co.softcampus.beans.HelloWorldEn;
import kr.co.softcampus.beans.HelloWorldKo;

public class MainClass {

	public static void main(String[] args) {
		
		HelloWorld hello1 = new HelloWorldKo();  // new HelloWorldEn();
		callMethod(hello1);
		
		HelloWorld hello2 = new HelloWorldKo(); // new HelloWorldEn();
		callMethod(hello2);
	}
	
	public static void callMethod(HelloWorld hello) {
		hello.sayHello();
	}

}

< 다형성의 문제점 >
자바 프로젝트만을 사용했을 때보다는 유지보수가 훨씬 쉬워졌지만,
변경사항이 생겼을 때 기존에 HelloWorldEn 클래스 객체가 생성되는 부분을 포함한 모든 Java파일을 열어 HelloWorldKo 클래스 객체를 생성하도록 일일이 수정해 주어야 한다는 불편함은 여전히 남아있다.

0개의 댓글