1. 프로그램 등록
2. URL과 프로그램을 연결
@Controller // 1. 프로그램 등록
public class Hello {
int iv = 10; // 인스턴스 변수
static int cv = 20; // static변수
@RequestMapping("/hello") // 2. URL과 main()을 연결
public void main() { // 인스턴스 메서드 - iv, cv 둘다 사용가능
System.out.println("Hello");
System.out.println(cv);
System.out.println(iv);
}
public static void main2() { // static메서드 - cv만 사용가능
System.out.println(cv); // OK
System.out.println(iv); // 에러
}
}
- Run on Server를 해주면 다음과 같이 나오는데 브라우저에 출력할게 없어서 그렇다.
- public void main()이 static이 아니어도 되는 이유 : 톰캣이 객체 생성을 해주기 때문
@Controller // 1. 프로그램 등록
public class Hello {
int iv = 10; // 인스턴스 변수
static int cv = 20; // static변수
@RequestMapping("/hello") // 2. URL과 main()을 연결
private void main() { // 인스턴스 메서드 - iv, cv 둘다 사용가능
System.out.println("Hello - private");
System.out.println(cv);
System.out.println(iv);
}
public static void main2() { // static메서드 - cv만 사용가능
System.out.println(cv); // OK
System.out.println(iv); // 에러
}
}
- Reflection API 사용
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) throws Exception{
// Hello hello = new Hello();
// hello.main(); // private이라서 외부 호출 불가
// Reflection API를 사용 - 클래스 정보를 얻고 다룰 수 있는 강력한 기능제공
// java.lang.reflect패키지를 제공
// Hello클래스의 Class객체(클래스의 정보를 담고 있는 객체)를 얻어온다.
Class helloClass = Class.forName("com.fastcampus.ch2.Hello");
Hello hello = (Hello)helloClass.newInstance(); // Class객체가 가진 정보로 객체 생성
Method main = helloClass.getDeclaredMethod("main");
main.setAccessible(true); // private인 main()을 호출가능하게 한다.
main.invoke(hello); // hello.main()
}
}
'Spring' 카테고리의 다른 글
6. HTTP 요청과 응답/예제 - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.01.31 |
---|---|
5. HTTP 요청과 응답 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.31 |
4. AWS에 배포하기 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.31 |
2. AWS에 서버 구축하기 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.01.29 |
1. Spring개발도구 - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.01.28 |