[Spring] 원격 프로그램 실행방법

안병욱·2022년 5월 7일
0

Spring 프로젝트를 생성 후 브라우저에서 원격으로 우리가 만든 프로젝트를 실행하는 방법을 알아보겠다.

Controller 생성
1. 프로그램 등록
2. URL과 프로그램 연결

3. 브라우저에서 해당 URL로 호출

위 사진에서는 localhost:8181/ch2/hello 를 호출 하였는데, ch2는 기존에 우리가 만든
Spring Legacy Project 의 이름이고 뒤에 hello는 2.URL과 프로그램 연결에 있는 사진에서
privete void main()이라는 메서드에 @RequestMapping으로 hello를 부착 시켜준것이다.

위의 사진처럼 URL을 입력 후 엔터를 누르게 되면

이런씩으로 404 찾을수 없다고 나오는데, 그 이유는 현재 우리가 web에 넣어줄 파일이 없기 때문이다. 하지만 Servers의 콘솔창을 보게 되면

이런씩으로 우리가 기존에 넣어주었던 System.out.println() 함수가 실행이 된다.

인스턴스 메서드가 실행될 수 있는 이유

그럼 여기서 우리는 의문을 하나 품을 수 있다. 인스턴스 메서드를 RequestMapping으로 연결을 해주었는데 보통 클래스의 메서드를 사용하려면 static이 아니고서야 객체를 생성을 해주어야 한다. 하지만 우리는 객체를 생성해주지 않았는데 그 이유를 알아보면, 누군가가 객체를 대신 생성해줬다는 이야기 이다. 이게 무슨 개똥같은 소리인가 라고 할 것인데 밑에서 설명을 해주겠다.

브라우저에서 URL로 호출을 하면 Apache Tomcat(WAS서버) 내부에서 객체를 생성을해주고 난뒤
메서드가 호출이 되는 것이다.

  1. Apache Tomcat의 WAS서버에서 객체를 생성
  2. 메서드 호출
//2. URL과 메서드를 연결
	@RequestMapping("/hello")
	private void main() {  //인스턴스 메서드 - iv, cv를 둘다 사용가능
		System.out.println("Hello");
	}

Static 메서드가 아닌 인스턴스 메서드를 사용하는 이유

메서드에 static을 붙여도 되고 안붙여도 된다. 하지만 static 메서드에서는 인스턴스 변수를 사용할 수 없기 때문에 가급적이면 인스턴스 메서드를 사용하면 좋다.

private 메서드도 실행이 될까?



확인을 해보면 실행이 잘된다.
@RequestMapping 어노테이션은 외부에서 접근가능하도록 맵핑을 해주기 때문에 메서드의 접근제어자와 상관없이 호출가능하다.

그 이유는 JAVA의 Reflection API를 사용하기 때문이다.

Main 클래스 생성

실행결과

우리는 앞으로 Spring을 배우면서 자바의 Reflection API를 자주사용하니 사용법을 알아두자!

0개의 댓글