728x90
cd /opt/homebrew/Cellar/tomcat@9/9.0.65

실행

cd /opt/homebrew/Cellar/tomcat@9/9.0.65/libexec/bin

./startup.sh

종료

./shutdown.sh
728x90

현재 설치된 JDK 버전 목록 확인

/usr/libexec/java_home -V

아래 스크립트를 복붙!

javahome_usage() {
        echo "javahome - switch to different JDK version"
        echo "Usage: javahome [-h] [-v VERSION]" 
        echo echo " -h : display usage" 
        echo " -v : specific JDK version to switch" 
        echo echo "Examples: " 
        echo "># javahome -v 1.8 : switches to JDK8" 
        echo "># javahome -v 11 : switches to JDK11"
				echo "># javahome -v 16 : switches to JDK16"
				echo "># javahome -v 17 : switches to JDK17"
        echo "># javahome : display all installed JDK and display current JDK" 
}
jhome () {
    if [ "$1" = "-h" ] ; then
        jhome_usage
    fi
    if [ "$#" -eq 0 ] ; then
        /usr/libexec/java_home -V
    fi

    if [ "$#" -eq 2 ] && [ "$1" = "-v" ] ; then
        export JAVA_HOME=`/usr/libexec/java_home $@`
        echo "Setting JAVA_HOME:" $JAVA_HOME
        echo 
        echo "Added JAVA_HOME/bin to PATH"
        PATH=$PATH:$JAVA_HOME/bin
        echo $PATH
        echo 
        java -version
    fi
}14

아래와같이 출력된다

Setting JAVA_HOME: /Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home

Added JAVA_HOME/bin to PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home/bin:/Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home/bin

openjdk version "14.0.2" 2020-07-14
OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.2+12)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 14.0.2+12, mixed mode, sharing)
728x90

오래전에 어느 커뮤니티에서 가져온 글이다.

  1. NULL Parameter를 넘기지 말것
// 화면에서 size라는 parameter를 넘기는 case
// 혹시 null이 넘어오게 되면 기본형(int)이므로 default 0선언 (혹시 아니라면 알려주세요)
int num =0;

int size = param.getSize();
// (숫자 / 0)이므로 /0때문에 ArithmeticException 발생
totalPages = (int) (totalCnt / size);

2.NULL 여부 비교

String a = null; 
System.out.println(a.indexOf("갓"));
// 결과
// Exception in thread "main" java.lang.NullPointerException 
String a = null; 
if(a != null){ 
	System.out.println(a.indexOf("갓")); 
}

3.문자열 비교시 equlas 문자열을 앞에 위치하도록

public static void main(String[] args) { 
	String a = null; 
	
System.out.println("1번째============"); 

		if (a == "god") { 
			System.out.println("참"); 
		} else { 
			System.out.println("거짓"); //거짓 출력 
		} 
System.out.println("2번째============"); 
	if (a.equals("god")) {
	 // NPE 발생! 
		System.out.println("equals => 참"); 
	} else { 
		System.out.println("equals => 거짓"); 
	} 
} 
/******* 결과 *******/ 
// 1번째============Exception in thread "main" 거짓 
// 2번째============ java.lang.NullPointerException
  • NPE 피할수 있는 코드
public static void main(String[] args) { 
	String a = null; 
if ("god".equals(a)) {
	// NPE 발생하지 않음 
	System.out.println("equals => 참"); 
	} else { 
		System.out.println("equals => 거짓"); 
	} 
}
/******* 결과 *******/ 
// equals => 거짓
// "비교의 주체가 문자열"부터 주어진다면 "NullPointException"이 발생하지 않는다.
// 결국 순서만 바꿨음에도 적어도 "NullPointException"을 피할 수 있게 된다.

//정리해보면 문자열 비교는 "non-null String 기준으로 비교" 하는 것이 좋다.
//"비교의 주체가 문자열"이 오도록 하거나, "Constants" 상수로 처리하여 코딩하는 방법도 추천

4.toString() 보다 valueOf()를 추천

  • 비추천 방식
/*** 잘못 된 예시 ****/
public static void main(String[] args) {
	Integer a = 1;
	System.out.println(a.toString());

	a = null;
	System.out.println(a.toString());
}

/******* 결과 *******/
//1
//Exception in thread "main" java.lang.NullPointerException
//a라는 변수에 null이 오게되는 경우 당연히 "NullPointerException"이 발생한다.
  • 추천방식
/*** 권장하는 방식 ***/
public static void main(String[] args) {
	Integer a = null;
	System.out.println(String.valueOf(a));
}
/******* 결과 *******/
//null
//NullException을 발생을 피할 수 있게 된다.

5.체이닝 메소드 ( method Chaining) 호출 자제

/*** 잘못된 코드예시 ***/
// 이중 메시드 호출 지 null 값이 반환면 
// 뒤에 호출 되는 메서드는 결국 null.method1()..method2().method3() 과 같다
// debug 시 어려움 
String polcValCont = moStorePolicyService.getStorePolcBase(polcCd).getPolcValCont();

6.Apache Commons 에서 제공하는 StringUtils를 최대한 사용

public static void main(String[] args) { 
	System.out.println(StringUtils.isEmpty(null)); //true 
	System.out.println(StringUtils.equals("1", null)); //false 
	System.out.println(StringUtils.equals(null, "1")); //false 
	System.out.println(StringUtils.indexOf("갓", null)); //-1 
	System.out.println(StringUtils.indexOf(null, "갓")); //-1 
	System.out.println(StringUtils.upperCase(null)); //null 
} 
/******* 결과 *******/ 
//true 
//false 
//false 
//-1 
//-1 
//null

7.method 에서 NULL 리턴 하지 말자!

/* 권장하지 않는 방식*/
public List<UserVO> getUsers(){
    Result result = selectUsersQuery('selectUser');
return Collections.emptyList();    // 권장 return null; // 비 권장 . 
  }

 

일단 여기까지.

꽤 오래된 글이라 어디서 퍼왔는지 기억이 안난다. 혹시 최초 글작성자님 보고 계시면 댓글줘요. 링크추가 할게요!

728x90

@RestController = @Controller  + @Responsebody 이다.

특별한거 없다.

SpringMVC @Controller 은 직접 Thymeleaf 혹은Jsp 등 template engin 에 리턴해주고

JSON, XML 객체를 리턴하기 위해서 @ResponseBody를 붙여줘야 한다.

하지만

@RestController 는 Json 혹은 xml 객체 데이터를 리턴한다.(이미 ResponseBody가 포함되었기때문.)

뭐 인터넷에 많은 관련 그림들이 있다. 이또한 그들을 참고한것이므로...

 

Controller  관련

 

 

Restcontroller 관련

+ Recent posts