๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ ˆ๊ฑฐ์‹œ

2022.03.03 ์˜ ๊ธฐ๋ก

by GroovyArea 2022. 3. 3.

โ–ถ ํ•˜๋ฃจ 

=>  ๊ณต๋ถ€ ๊ด€๋ จ

1) ์Šคํ”„๋ง ๊ฐœ๊ตฌ๋ฆฌ์ฑ… CH4

2) MVC ๊ฐ์ฒด์ง€ํ–ฅ ๋ฆฌํŒฉํ† ๋ง (์—ด๊ฑฐํ˜•, ์ธํ„ฐํŽ˜์ด์Šค ๊ณ ๋ฏผ)

3) ๊ธˆ์ผ ์ˆ˜์—… ๋ณต์Šต

 

=> ํŒŒ์ด๋„ ํ”„๋กœ์ ํŠธ ๊ด€๋ จ

1) DB ๋งˆ๋ฌด๋ฆฌ ํšŒ์˜

2) ์ถ”ํ›„ ๋””ํ…Œ์ผ ์—…๋ฌด ์ •๋ฆฌ

3) ๋‹ค์Œ ํšŒ์˜ํ•  ๊ฒƒ git ํ˜‘์—…

 


โ–ถ ๋ฌธ์ œ ์ •๋ฆฌ

1. 


โ–ถ ๊ฐœ์ธ ๊ณต๋ถ€

public class ViewInput {
	
	private static final String RSP_INPUT = "1, 2, 3 ์ค‘์—์„œ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.";
	
	private static final String RESTART_INPUT = "์žฌ์‹œ์ž‘ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (y:n)";
	
	private static final Scanner SCANNER = new Scanner(System.in);
	
	public ViewInput() {
	
	}
	
	// ๊ฐ€์œ„๋ฐ”์œ„๋ณด ์ˆซ์ž ์ž…๋ ฅ ๋ฉ”์„œ๋“œ
	public static int inputRsp() {
		System.out.println(RSP_INPUT);
		
		int input = SCANNER.nextInt();
		
		SCANNER.nextLine();
		
		return input;
	}
	
	// ์žฌ์‹œ์ž‘ ๋ฌธ์ž ์ž…๋ ฅ ๋ฉ”์„œ๋“œ
	public char inputRestart() {
		System.out.println(RESTART_INPUT);
		
		char input = SCANNER.nextLine().charAt(0);
		
		SCANNER.nextLine();
		
		return input;
	}

=> viewInput ๋ถ„๋ฆฌ, ๋ฌธ์ž์—ด์€ ์ƒ์ˆ˜ํ™”

public enum Rsp {
	ROCK,
	SCISSORS,
	PAPER;
	
	private Rsp() {
		// TODO Auto-generated constructor stub
	}
	
	
}

=> ์ด ์ƒ์ˆ˜๋“ค์„ ๋‹ค๋ฅธ ๊ฐ์ฒด์—์„œ ์–ด๋–ป๊ฒŒ ์ด์šฉํ•  ๊ฒƒ์ธ์ง€ ๊ณ ๋ฏผ ์ข€ ํ•ด๋ณด์ž

 

String[] nameArr = {"Kim","Park","Jang","Lee"};
		List<String> nameList = Arrays.asList(nameArr);
		
		/*
		 * Arrays.sort(nameArr); Collections.sort(nameList);
		 * 
		 * for(String str : nameArr) { System.out.println(str); }
		 * 
		 * for(String str : nameList) { System.out.println(str); }
		 */	
		
		Stream<String> nameStream = nameList.stream();
		Stream<String> arrayStream = Arrays.stream(nameArr);
		
		nameStream
		.sorted()
		.forEach(System.out::println);
		arrayStream
		.sorted()
		.forEach(System.out::println);
		
		System.out.println(count());
		
		MyLambdaFunction lambdaFunction = (a,b) -> a>b? a:b;
		
		System.out.println(lambdaFunction.max(3, 5));
		
		Function<String, Integer> function = String::length;
		System.out.println(function.apply("Jewwloo"));
		
		Predicate<String> predicate = (str) -> str.equals("Hello World");
		System.out.println(predicate.test("Hello World"));
		
		Consumer<String> consumer = System.out::println;
		consumer.accept("hello!");
		
		
		List<String> list = Arrays.asList("a","b","c");
		
		Stream<String> stream = list.stream()
				.filter(name -> name.contains("a"));
				
		Stream<String> stream1 =
				list.stream()
				.map(s->s.toUpperCase());
	}
	
	public static long count() {
		List<String> myList = Arrays.asList("a1","a2","b1","b2","c2","c1");
		
		 return myList
		.stream()
		.filter(s->s.startsWith("c"))
		.map(String::toUpperCase)
		.sorted()
		.count();
	}
	
	
	
}
@FunctionalInterface
interface MyLambdaFunction{
	int max(int a, int b);
}

=> ๋žŒ๋‹ค์™€ Stream & Functional Interface ์‚ฌ์šฉ ์—ฐ์Šต ์ตœ์ดˆ ์ƒ์„ฑ -> ์ค‘๊ฐ„ ์—ฐ์‚ฐ -> ์ตœ์ข… ์—ฐ์‚ฐ & ๋ฉ”์„œ๋“œ ์ฐธ์กฐ


โ–ถ ์ˆ˜์—… ๋‚ด์šฉ

Mybatis

๋™์  SQL (Dynamic SQL)

  • ์—˜๋ฆฌ๋จผํŠธ์˜ ์ „๋‹ฌ๊ฐ’์— ๋”ฐ๋ผ ๋‹ค๋ฅธ SQL ๋ช…๋ น์„ ๋“ฑ๋ก๋˜๋Š” ๊ธฐ๋Šฅ
  • ⇒ OGNL(Object Graph Navigation Language) ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„⇒ ์†์„ฑ๊ฐ’์œผ๋กœ DTO & HashMap ํด๋ž˜์Šค(Map ์ธํ„ฐํŽ˜์ด์Šค) ์„ค์ •
    • ์—˜๋ฆฌ๋จผํŠธ ๋‚ด์šฉ(SQL ๋ฌธ์žฅ)์˜ ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
    • test ์†์„ฑ : [false] (SQL ๋ฌธ์žฅ ๋ฏธํฌํ•จ) ๋˜๋Š” [true] (SQL ๋ฌธ์žฅ ํฌnํ•จ) ์ค‘ ํ•˜๋‚˜๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
    • ⇒ test ์†์„ฑ๊ฐ’์ด [true]์ธ ๊ฒฝ์šฐ SQL ๋ฌธ์žฅ์„ SQL ๋ช…๋ น์— ํฌํ•จ
    • ⇒ ํ•„๋“œ๋ช… ๋˜๋Š” ๋งตํ‚ค๋กœ ํ‘œํ˜„๋œ ์ „๋‹ฌ๊ฐ’์„ ๋น„๊ตํ•œ ์กฐ๊ฑด์‹์„ test ์†์„ฑ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ
    ๋ฌธ์ œ : ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฐ’์ด ์ „๋‹ฌ๋  ๊ฒฝ์šฐCHOOSE
    • ์กฐ๊ฑด์‹์— ์˜ํ•ด ํ•˜๋‚˜์˜ ์—˜๋ฆฌ๋จผํŠธ ๋‚ด์šฉ(SQL๋ฌธ์žฅ)์ด ํฌํ•จ๋˜๋„๋ก ํ•˜๋Š” ์„ค์ •ํ•˜๋Š” ์ƒ์œ„ ์—˜๋ฆฌ๋จผํŠธ
    • ⇒ ๋‹ค์ˆ˜์˜ ์—˜๋ฆฌ๋จผํŠธ ์ค‘ ํ•˜๋‚˜์˜ ์—˜๋ฆฌ๋จผํŠธ ๋‚ด์šฉ๋งŒ ํฌํ•จ
    • ⇒ ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ
      • when : ์—˜๋ฆฌ๋จผํŠธ ๋‚ด์šฉ(SQL ๋ฌธ์žฅ)์˜ ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
      • test ์†์„ฑ : false(SQL ๋ฌธ์žฅ ๋ฏธํฌํ•จ) ๋˜๋Š” true(SQL ๋ฌธ์žฅ ํฌํ•จ) ์ค‘ ํ•˜๋‚˜๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
      ⇒ test ์†์„ฑ๊ฐ’์ด [true]์ธ ๊ฒฝ์šฐ SQL ๋ฌธ์žฅ์„ SQL ๋ช…๋ น์— ํฌํ•จ
      • otherwise : ๋ชจ๋“  when ์—˜๋ฆฌ๋จผํŠธ์˜ test ์†์„ฑ๊ฐ’์ด [false] ์ธ๊ฒฝ์šฐ ์—˜๋ฆฌ๋จผํŠธ ๋‚ด์šฉ์„ SQL ๋ช…๋ น์— ํฌํ•จํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
    ํ•ด๊ฒฐ๋ฒ•-2 )ํ•˜๋‚˜์˜ WHERE ๊ตฌ๋ฌธ์œผ๋กœ 2๊ฐœ์˜ ์กฐ๊ฑด์ด ์—ฐ๊ฒฐ๋˜์–ด ํฌํ•จ๋˜๋„๋ก ์„ค์ •
    • SQL ๋ฌธ์žฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
    • ⇒ ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ๋กœ if ์—˜๋ฆฌ๋จผํŠธ ์‚ฌ์šฉ
      • prefix ์†์„ฑ : trim ์—˜๋ฆฌ๋จผํŠธ์— SQL ๋ฌธ์žฅ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ SQL ๋ฌธ์žฅ ์•ž๋ถ€๋ถ„์— ์ถ”๊ฐ€๋  ๋‹จ์–ด๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
      • suffix ์†์„ฑ : trim ์—˜๋ฆฌ๋จผํŠธ์— SQL ๋ฌธ์žฅ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ SQL ๋ฌธ์žฅ ๋’ท๋ถ€๋ถ„์— ์ถ”๊ฐ€๋  ๋‹จ์–ด๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
      • prefixOverrides ์†์„ฑ : trim ์—˜๋ฆฌ๋จผํŠธ์— SQL ๋ฌธ์žฅ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ SQL ๋ฌธ์žฅ ์•ž๋ถ€๋ถ„์—์„œ ์‚ญ์ œ ๋  ๋‹จ์–ด๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
      • ⇒ | ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์ œ๊ฑฐํ•  ๋‹จ์–ด๋ฅผ ๋‚˜์—ดํ•˜์—ฌ ์„ค์ • ๊ฐ€๋Šฅ
      • suffixOverrides ์†์„ฑ : trim ์—˜๋ฆฌ๋จผํŠธ์— SQL ๋ฌธ์žฅ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ SQL ๋ฌธ์žฅ ๋’ท๋ถ€๋ถ„์—์„œ ์‚ญ์ œ ๋  ๋‹จ์–ด๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
    ⇒ ๋‹ค์ค‘ ๊ฒ€์ƒ‰์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ๋‹ค~ SQL์„ ๊ณ„์† ์•ˆ ๋งŒ๋“ค์–ด์ค˜๋„ ๋จ
    • WHERE ์—˜๋ฆฌ๋จผํŠธ์— SQL ๊ตฌ๋ฌธ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ ์•ž๋ถ€๋ถ„์— [WHERE] ๋‹จ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
    • ⇒ ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ๋กœ if ์—˜๋ฆฌ๋จผํŠธ ์‚ฌ์šฉ
    • ⇒ where ์—˜๋ฆฌ๋จผํŠธ์˜ ๋ฌธ์žฅ ์•ž๋ถ€๋ถ„์— ์กฐ๊ฑด์‹์ด ์•„๋‹Œ ๋ฌธ์žฅ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ ์ œ๊ฑฐ
    set ์—˜๋ฆฌ๋จผํŠธ
    • set ์—˜๋ฆฌ๋จผํŠธ์— SQL ๋ฌธ์žฅ์— ์กด์žฌํ•  ๊ฒฝ์šฐ ์•ž๋ถ€๋ถ„์— [SET] ๋‹จ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
    • ⇒ if ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ๋กœ ์‚ฌ์šฉ
    • ⇒ ํฌํ•จ๋  SQL ๋ฌธ์žฅ ๋’ท๋ถ€๋ถ„์— ๋ณ€๊ฒฝ์‹์ด ์•„๋‹Œ ๋ฌธ์žฅ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ ์ œ๊ฑฐ
  • where
  • trim
  • ํ•ด๊ฒฐ๋ฒ•-1 ) ํ•˜๋‚˜์˜ WHERE ๊ตฌ๋ฌธ๋งŒ ํฌํ•จ๋˜๋„๋ก ์„ค์ •
  • if ์—˜๋ฆฌ๋จผํŠธ
  • ์ฃผ์˜) ๋™์  SQL ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ parameterType ์†์„ฑ๊ฐ’์œผ๋กœ ๊ธฐ๋ณธํ˜•(Wrapper Class) ๋˜๋Š” String ํด๋ž˜์Šค ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ

parameterType ์†์„ฑ๊ฐ’์ด ArrayList ํด๋ž˜์Šค(List ์ธํ„ฐํŽ˜์ด์Šค)๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ SQL ๋ช…๋ น์—์„œ๋Š” ์ „๋‹ฌ๊ฐ’์„ [list]๋กœ ํ‘œํ˜„

foreach

  • List ์ธ์Šคํ„ด์Šค๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ SQL ๋ฌธ์žฅ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ SQL ๋ช…๋ น์— ํฌํ•จํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
  • collection ์†์„ฑ : ๋ฐ˜๋ณต ์ฒ˜๋ฆฌํ•  List ์ธ์Šคํ„ด์Šค์˜ ์ด๋ฆ„์„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • item ์†์„ฑ : List ์ธ์Šคํ„ด์Šค์˜ ์š”์†Œ๊ฐ’์„ ์ œ๊ณต๋ฐ›์•„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ฆ„์„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • open ์†์„ฑ : foreach ์—˜๋ฆฌ๋จผํŠธ ๋‚ด์šฉ์˜ ์•ž๋ถ€๋ถ„์— ์ถ”๊ฐ€๋  ๋‹จ์–ด๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • close ์†์„ฑ : foreach ์—˜๋ฆฌ๋จผํŠธ ๋‚ด์šฉ์˜ ๋’ท๋ถ€๋ถ„์— ์ถ”๊ฐ€๋  ๋‹จ์–ด๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • seperator ์†์„ฑ : ์š”์†Œ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ตฌ๋ถ„๋‹จ์–ด๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •

@Results

  • ๊ฒ€์ƒ‰ํ–‰์˜ ์ปฌ๋Ÿผ๊ฐ’์„ ํด๋ž˜์Šค์˜ ํ•„๋“œ์— ๋งคํ•‘๋˜์–ด ์ €์žฅํ•  ์ˆ˜ ์—†๋Š” ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜
  • ⇒ XML ๋งตํผ์˜ resultMap ์—˜๋ฆฌ๋จผํŠธ์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต
  • value ์†์„ฑ : ๋งคํ•‘ ์ •๋ณด๋ฅผ Result ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐฐ์—ด๋กœ ํ‘œํ˜„ํ•˜์—ฌ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
    • ๊ฒ€์ƒ‰ํ–‰์˜ ์ปฌ๋Ÿผ๊ฐ’์„ ํ•„๋“œ์— ๋งคํ•‘ํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
    • column ์†์„ฑ : ๊ฒ€์ƒ‰ํ–‰์˜ ์ปฌ๋Ÿผ๋ช…์„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
    • property ์†์„ฑ : ์ปฌ๋Ÿผ๊ฐ’์„ ์ €์žฅํ•  ํด๋ž˜์Šค์˜ ํ•„๋“œ๋ช…์„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • @Result

@SelectProvider

  • SELECT ๋ช…๋ น์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ SELECT ๋ช…๋ น์„ ๋“ฑ๋กํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜ - ๋™์  SQL ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค ์ž‘์„ฑ
  • type ์†์„ฑ : SQL ๋ช…๋ น์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์ž‘์„ฑ๋œ ํด๋ž˜์Šค(Clazz)๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • method ์†์„ฑ : SQL ๋ช…๋ น์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ช…์„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •

SQL

  • SQL ๋ช…๋ น์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค
  • ⇒ SQL ๋ช…๋ น ์ž‘์„ฑ์— ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ SQL ๋ช…๋ น ์ €์žฅ
  • ⇒ ์ต๋ช…์˜ ๋‚ด๋ถ€ ํด๋ž˜์Šค๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
  • SQL.toString() : SQL ์ธ์Šคํ„ด์Šค์— ์ €์žฅ๋œ SQL ๋ช…๋ น์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ

ํญํฌ์ˆ˜ ๊ฐœ๋ฐœ ๋ชจ๋ธ

  • ์ˆœ์ฐจ์ ์ธ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•

 

Spring Framework

Framework๋ž€?

  • ๊ฐœ๋ฐœ์— ์žˆ์–ด ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋ผˆ๋Œ€๋‚˜ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•จ
  • ์—ฌ๋Ÿฌ ์•ฑ์ด ๋น„์Šทํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ์ƒ์‚ฐ์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๋„ ์‰ฌ์›€
  • ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™์„ ๋”ฐ๋ฆ„

⇒ java : ์ธํ„ฐํŽ˜์ด์Šค, ํด๋ž˜์Šค ⇒ resources : XML ํŒŒ์ผ๋“ค
⇒ ์›น ๊ด€๋ จ ์ž์›๋“ค : html, css, images..๋“ฑ๋“ฑ

Maven

  • ๋นŒ๋“œ ํˆด - ํ”„๋กœ์ ํŠธ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํˆด
    • Maven ๋นŒ๋“œ ํˆด์„ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ™˜๊ฒฝ์„ค์ •ํŒŒ์ผ
    • ⇒ Local repository์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์ด ์—†๋Š” ๊ฒฝ์šฐ ๋ฉ”์ด๋ธ ์ €์žฅ์†Œ(Maven respository)์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ์ €์žฅ
    • ๋กœ์ปฌ ์ €์žฅ์†Œ(Local respository) : ํ”„๋กœ์ ํŠธ์— ๋นŒ๋“œ๋  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ €์žฅํ•˜์—ฌ ์ œ๊ณตํ•˜๋Š” ํด๋”
    • ⇒ ์‚ฌ์šฉ์ž ํด๋”์˜ .m2 ํด๋” ์‚ฌ์šฉ → ์š”๊ฒŒ ๋กœ์ปฌ ์ €์žฅ์†Œ ์ดํด๋ฆฝ์Šค ์‚ญ์ œํ•˜๋ ค๋ฉด .p2 .eclipse ํด๋” ๋‹ค ์‚ญ์ œํ•ด์•ผํ•จ
    • ⇒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋นŒ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ดํด๋ฆฝ์Šค ์ข…๋ฃŒ ํ›„ .m2 ํด๋”์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ ์‚ญ์ œ
    • ๋ฉ”์ด๋ธ ์ €์žฅ์†Œ(Maven Repository) : https://mvnrepository.com
    • properties : pom.xml ํŒŒ์ผ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ’์„ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
    • ⇒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ
    • ⇒ ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ ์ด๋ฆ„์„ ${์—˜๋ฆฌ๋จผํŠธ๋ช…} ํ˜•์‹์œผ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ์—˜๋ฆฌ๋จผํŠธ์˜ ๋‚ด์šฉ์„ ๊ฐ’์œผ๋กœ ์ œ๊ณต
    • dependency : ๋นŒ๋“œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ •๋ณด๋ฅผ ์„ค์ •ํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
      • groupid : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ทธ๋ฃน์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ (ํŒจํ‚ค์ง€ ๊ฐ™์€ ๋†ˆ → ์–ด๋–ค ํšŒ์‚ฌ์—์„œ ๋งŒ๋“ค์—ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋ฆ„์ด ๊ฐ™์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฃน์„ ๋‚˜๋ˆ”)
      • artifactId : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋ฆ„์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
      • version : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
      • exclusions : exclusion ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•œ ์ƒ์œ„ ์—˜๋ฆฌ๋จผํŠธ
        • exclusion : ์˜์กด ๊ด€๊ณ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ์™ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์ •ํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
        • ๋ฉ”์ด๋ธ ๋ฒ„์ „ ๋ฐ”๊พธ๋ฉด ์ง€๊ฐ€ ์•Œ์•„์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋นŒ๋“œํ•จ
    • ⇒ ์˜์กด ๊ด€๊ณ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž๋™ ๋นŒ๋“œ ์ฒ˜๋ฆฌ
    • scope : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ ์šฉ ๋ฒ”์œ„
    https://mvnrepository.com/artifact/xerces/xercesImpl
  • ⇒ ๋กœ๊ทธ ๊ตฌํ˜„์ฒด๋ฅผ ์ด์šฉํ•œ ๋กœ๊น… ์ฒ˜๋ฆฌ์‹œ ๊ฒฝ๋กœ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋ฒ„์ „ ๋ณ€๊ฒฝ ํ›„ ์ €์žฅ ์‹œ ์Šค์Šค๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ชจ์Šต

Spring Framework ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ ์ด์Šˆ ์‚ฌํ•ญ

  1. ์ปจํ…์ŠคํŠธ ๋„ค์ž„ ๋ฐ”๊พธ๊ธฐ (์„œ๋ฒ„ ๋”๋ธ”ํด๋ฆญ)
  2. ํ”„๋กœ๊ทธ๋žจ ๊ฒฝ๋กœ์— ํ•œ๊ธ€์ด ์ ํ˜€์žˆ์œผ๋ฉด log4j๊ฐ€ ๋ชป ์ฝ๋Š”๋‹ค.
  3. ๋ฉ”์ด๋ธ์ด ๋นŒ๋“œ ์•ˆ ๋˜์—ˆ์„ ์‹œ ์ถ”๊ฐ€ํ•˜๋ฉด ๋จ(๊ทนํžˆ ๋“œ๋ญ„)
  4. project facets ์—์„œ java , webmodule ๋ฒ„์ „ 16 , 4.0 ๋ฒ„์ „์œผ๋กœ ๋ฐ”๊ฟ”๋ผ
  5. spring 3 ๋ฒ„์ „(MVC๋ฐ–์— ๋ชปํ•จ, 4๋Š” ํด๋ผ์šฐ๋“œ)์ด๋‹ˆ jsp-api (4๋ฒ„์ „์œผ๋กœ) ๋ฒ„์ „์ด๋‹ˆ ๋‹ค ์˜ฌ๋ ค์ค˜์•ผ ํ•จ

Logging

  • ๊ธฐ๋กํ•˜๋Š” ํ–‰์œ„
  • log4j.xml ์— ๊ธฐ๋ก์— ๋Œ€ํ•œ ์ง€์นจ์ด ๋‹ค ๊ธฐ๋ก๋˜์–ด ์žˆ์Œ
  • ์œ„ ์—˜๋ฆฌ๋จผํŠธ์— ๋“ค์–ด๊ฐˆ dtd ํŒŒ์ผ๋„ ๊ฐ€์ง€๊ณ  ์™€์•ผํ•จ⇒ log4j.xml ํŒŒ์ผ์— ๊ธฐ๋ก ๊ด€๋ จ ์ •๋ณด ์„ค์ •
    • appender : ๋กœ๊ทธ ์ „๋‹ฌ ๋ฐฉ์‹(๋กœ๊ทธ๋งค์ฒด)๊ณผ ๋กœ๊ทธ ํ˜•์‹์„ ์„ค์ •ํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ(์–ด๋””์— ์–ด๋–ป๊ฒŒ ๊ธฐ๋กํ• ์ง€)
      • name ์†์„ฑ : appender ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ž๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
      • class ์†์„ฑ : Appender ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ๋กœ๊ทธ ๊ตฌํ˜„์ฒด ํด๋ž˜์Šค๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
        • fileAppender, socketAppender, consoleAppender ๋“ฑ๋“ฑ..
      • param ์—˜๋ฆฌ๋จผํŠธ : Appender ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ ํ•„์š”ํ•œ ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
    • ⇒ Appender ํด๋ž˜์Šค๋งˆ๋‹ค ํ•„์š”ํ•œ ์ด๋ฆ„๊ณผ ๊ฐ’์ด ๋‹ค๋ฅด๊ฒŒ ์„ค์ •
      • name ์†์„ฑ : ์ „๋‹ฌ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์‹๋ณ„์ž๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
      • value ์†์„ฑ : ์ „๋‹ฌ๊ฐ’์„ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
    • layout : ๋กœ๊ทธ ํ˜•์‹์„ ์„ค์ •ํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
      • class ์†์„ฑ : ๋กœ๊ทธ ํ˜•์‹์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
      • param ์—˜๋ฆฌ๋จผํŠธ : layout ์ธ์Šคํ„ด์Šค์— ํ•„์š”ํ•œ ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ์—˜๋ฆฌ๋จผํŠธ
      • PatternLayout ํด๋ž˜์Šค๋Š” ๋กœ๊ทธ ํŒจํ„ด ๋ฌธ์ž(Conversion Character)๋ฅผ ์ œ๊ณต (๋ฌธ์ž๋งŒ ์“ฐ๋ฉด ํ—ท๊ฐˆ๋ฆฌ๋ฏ€๋กœ %๋„ ๊ฐ™์ด ์”€)
      • Conversion Character
      • %c : ํŒจํ‚ค์ง€๊ฐ€ ํฌํ•จ๋œ ํด๋ž˜์Šค ์ด๋ฆ„์„ ๊ธฐ๋ก - {์ •์ˆ˜๊ฐ’}์„ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜
        • ⇒ %c{1} : ํŒจํ‚ค์ง€๋ฅผ ์ œ์™ธํ•œ ํด๋ž˜์Šค ์ด๋ฆ„๋งŒ ๊ธฐ๋ก
      • %d : ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๊ธฐ๋ก - {SimpleDateFormatPattern}์„ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ
        • ⇒ %d{yyyy-MM-dd} : [๋…„-์›”-์ผ] ํ˜•์‹์œผ๋กœ ๋‚ ์งœ๋งŒ ๊ธฐ๋ก
      • %m : ๋กœ๊ทธ ๋ฉ”์‹œ์ง€ ๊ธฐ๋ก
      • %n : ์—”ํ„ฐ[Enter]๊ธฐ๋ก - ๋กœ๊ทธ ์ค„๋ฐ”๊ฟˆ
      • %M : ํ˜ธ์ถœ ๋ฉ”์„œ๋“œ ์ด๋ฆ„ ๊ธฐ๋ก
      • %p : ๋กœ๊ทธ ์ด๋ฒคํŠธ ๊ธฐ๋ก - Trace > DEBUG > INFO > WARN > ERROR > FATAL
      • %r : ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ๊ธฐ๋ก
      • %f : ์ฒ˜๋ฆฌ ์Šค๋ ˆ๋“œ ์ด๋ฆ„ ๊ธฐ๋ก
      • Conversion Character ์ž๋ฆฟ์ˆ˜ ์„ค์ •
      • %p : ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์ตœ๋Œ€ ์ž๋ฆฌ์ˆ˜ ์ œ๊ณตํ•˜์—ฌ ๊ธฐ๋ก
      • %์ž๋ฆฟ์ˆ˜p : ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์ตœ๋Œ€ ์ž๋ฆฟ์ˆ˜๋กœ ์ œ๊ณต๋ฐ›์•„ ๊ธฐ๋ก
      • %.์ž๋ฆฟ์ˆ˜p : ๋กœ๊ทธ์ด๋ฒ ํŠธ๋ฅผ ์ดˆ์†Œ ์ž๋ฆฟ์ˆ˜๋ฅผ ์ œ๊ณต๋ฐ›์•„ ๊ธฐ๋ก
      • %-์ž๋ฆฟ์ˆ˜p : ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์ตœ๋Œ€ ์ž๋ฆฟ์ˆ˜๋กœ ์ œ๊ณต๋ฐ›์•„ ๊ธฐ๋ก(์™ผ์ชฝ ์ •๋ ฌ)
  • Appenders
  • log4j : ์žฅ์น˜์— ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋กœ๊ทธ ๊ตฌํ˜„ ํ”„๋กœ๊ทธ๋žจ

logger : ๊ธฐ๋ก์ž(appender)๋ฅผ ์ด์šฉํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ

  • name ์†์„ฑ : ๊ธฐ๋ก์ž(Appender)๋ฅผ ์ด์šฉํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
  • additivity ์†์„ฑ : false ๋˜๋Š” true ์ค‘ ํ•˜๋‚˜๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • ⇒ false : root ์—˜๋ฆฌ๋จผํŠธ์˜ appender ์ œ์™ธ, true(๊ธฐ๋ณธ๊ฐ’) : root ์—˜๋ฆฌ๋จผํŠธ์˜ appender ์ถ”๊ฐ€
  • level : ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
    • value ์†์„ฑ: ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
    appender๋Š” ๊ณ„์† ์ถ”๊ฐ€ ๊ฐ€๋Šฅํ•จ. (์˜ค๋ฒ„๋ผ์ด๋“œ๊ฐ€ ์•„๋‹˜)

๋กœ๊ทธ ๊ตฌํ˜„์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์ง„๋‹ค.

Root Logger

root : ์ตœ์ƒ์œ„ ๊ธฐ๋ก ์ •๋ณด (Logger)๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ

⇒ ๋ชจ๋“  ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์ ์šฉ๋˜๋Š” ๊ธฐ๋ก ์ •๋ณด

⇒ ๋ชจ๋“  Logger ์—˜๋ฆฌ๋จผํŠธ๋Š” root ์—˜๋ฆฌ๋จผํŠธ์˜ ๊ธฐ๋ก ์ •๋ณด๋ฅผ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉ

  • priority : ๊ธฐ๋ณธ ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
    • value ์†์„ฑ : ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •
  • appender-ref : ๊ธฐ๋ก์ž(Appender)๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์—˜๋ฆฌ๋จผํŠธ
    • ref ์†์„ฑ : appender ์—˜๋ฆฌ๋จผํŠธ์˜ ์‹๋ณ„์ž๋ฅผ ์†์„ฑ๊ฐ’์œผ๋กœ ์„ค์ •

Logger

  • ๋กœ๊ทธ ๊ตฌํ˜„์ฒด์—๊ฒŒ ๊ธฐ๋ก์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์ธ์Šคํ„ด์Šค

LoggerFactory

  • Logger ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค
  • LoggerFactory.getLogger(Class<T> class) : ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ํด๋ž˜์Šค(Clazz)์—์„œ ๋ฐœ์ƒ๋œ ๊ธฐ๋ก์„ ๋กœ๊ทธ ๊ตฌํ˜„์ฒด์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” Logger ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ
  • Logger.info(String message) : ๋กœ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒํ•˜์—ฌ ๋กœ๊ทธ ๊ตฌํ˜„์ฒด์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฉ”์„œ๋“œ

โ€‹


โ–ถ ํŒŒ์ด๋„ ํ”„๋กœ์ ํŠธ

> DB ๋งˆ๋ฌด๋ฆฌ ํšŒ์˜

> ๋””ํ…Œ์ผ ํšŒ์˜ ์˜ˆ์ •

๋ฐ˜์‘ํ˜•

'๋ ˆ๊ฑฐ์‹œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

2022.03.07 ์˜ ๊ธฐ๋ก  (0) 2022.03.07
2022.03.05~03.06 ์˜ ๊ธฐ๋ก  (0) 2022.03.05
2022.02.28์˜ ๊ธฐ๋ก  (0) 2022.02.28
2022.02.27์˜ ๊ธฐ๋ก  (0) 2022.02.27
2022.02.25์˜ ๊ธฐ๋ก  (0) 2022.02.25