โถ ํ๋ฃจ
=> ๊ณต๋ถ ๊ด๋ จ
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 ์์ฑ๊ฐ์ผ๋ก ์ฌ์ฉ
- ์กฐ๊ฑด์์ ์ํด ํ๋์ ์๋ฆฌ๋จผํธ ๋ด์ฉ(SQL๋ฌธ์ฅ)์ด ํฌํจ๋๋๋ก ํ๋ ์ค์ ํ๋ ์์ ์๋ฆฌ๋จผํธ
- ⇒ ๋ค์์ ์๋ฆฌ๋จผํธ ์ค ํ๋์ ์๋ฆฌ๋จผํธ ๋ด์ฉ๋ง ํฌํจ
- ⇒ ํ์ ์๋ฆฌ๋จผํธ
- when : ์๋ฆฌ๋จผํธ ๋ด์ฉ(SQL ๋ฌธ์ฅ)์ ํฌํจ ์ฌ๋ถ๋ฅผ ์ค์ ํ๋ ์๋ฆฌ๋จผํธ
- test ์์ฑ : false(SQL ๋ฌธ์ฅ ๋ฏธํฌํจ) ๋๋ true(SQL ๋ฌธ์ฅ ํฌํจ) ์ค ํ๋๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
- otherwise : ๋ชจ๋ when ์๋ฆฌ๋จผํธ์ test ์์ฑ๊ฐ์ด [false] ์ธ๊ฒฝ์ฐ ์๋ฆฌ๋จผํธ ๋ด์ฉ์ SQL ๋ช ๋ น์ ํฌํจํ๋ ์๋ฆฌ๋จผํธ
- SQL ๋ฌธ์ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์๋ฆฌ๋จผํธ
- ⇒ ํ์ ์๋ฆฌ๋จผํธ๋ก if ์๋ฆฌ๋จผํธ ์ฌ์ฉ
- prefix ์์ฑ : trim ์๋ฆฌ๋จผํธ์ SQL ๋ฌธ์ฅ์ด ์กด์ฌํ ๊ฒฝ์ฐ SQL ๋ฌธ์ฅ ์๋ถ๋ถ์ ์ถ๊ฐ๋ ๋จ์ด๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
- suffix ์์ฑ : trim ์๋ฆฌ๋จผํธ์ SQL ๋ฌธ์ฅ์ด ์กด์ฌํ ๊ฒฝ์ฐ SQL ๋ฌธ์ฅ ๋ท๋ถ๋ถ์ ์ถ๊ฐ๋ ๋จ์ด๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
- prefixOverrides ์์ฑ : trim ์๋ฆฌ๋จผํธ์ SQL ๋ฌธ์ฅ์ด ์กด์ฌํ ๊ฒฝ์ฐ SQL ๋ฌธ์ฅ ์๋ถ๋ถ์์ ์ญ์ ๋ ๋จ์ด๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
- ⇒ | ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌ ์ ๊ฑฐํ ๋จ์ด๋ฅผ ๋์ดํ์ฌ ์ค์ ๊ฐ๋ฅ
- suffixOverrides ์์ฑ : trim ์๋ฆฌ๋จผํธ์ SQL ๋ฌธ์ฅ์ด ์กด์ฌํ ๊ฒฝ์ฐ SQL ๋ฌธ์ฅ ๋ท๋ถ๋ถ์์ ์ญ์ ๋ ๋จ์ด๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
- WHERE ์๋ฆฌ๋จผํธ์ SQL ๊ตฌ๋ฌธ์ด ์กด์ฌํ ๊ฒฝ์ฐ ์๋ถ๋ถ์ [WHERE] ๋จ์ด๋ฅผ ์ถ๊ฐํ๋ ์๋ฆฌ๋จผํธ
- ⇒ ํ์ ์๋ฆฌ๋จผํธ๋ก if ์๋ฆฌ๋จผํธ ์ฌ์ฉ
- ⇒ where ์๋ฆฌ๋จผํธ์ ๋ฌธ์ฅ ์๋ถ๋ถ์ ์กฐ๊ฑด์์ด ์๋ ๋ฌธ์ฅ์ด ์กด์ฌํ ๊ฒฝ์ฐ ์ ๊ฑฐ
- 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๋?
- ๊ฐ๋ฐ์ ์์ด ๊ธฐ๋ณธ์ด ๋๋ ๋ผ๋๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํจ
- ์ฌ๋ฌ ์ฑ์ด ๋น์ทํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ฏ๋ก ์์ฐ์ฑ์ด ํฅ์๋๊ณ ์ ์ง๋ณด์๋ ์ฌ์
- ๊ฐ๋ฐฉ ํ์ ์์น์ ๋ฐ๋ฆ
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 : ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฉ ๋ฒ์
- ⇒ ๋ก๊ทธ ๊ตฌํ์ฒด๋ฅผ ์ด์ฉํ ๋ก๊น ์ฒ๋ฆฌ์ ๊ฒฝ๋ก์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ํด๊ฒฐํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Spring Framework ํ๋ก์ ํธ ์์ฑ ์ ๋ณ๊ฒฝ ์ฌํญ ๋ฐ ์ด์ ์ฌํญ
- ์ปจํ ์คํธ ๋ค์ ๋ฐ๊พธ๊ธฐ (์๋ฒ ๋๋ธํด๋ฆญ)
- ํ๋ก๊ทธ๋จ ๊ฒฝ๋ก์ ํ๊ธ์ด ์ ํ์์ผ๋ฉด log4j๊ฐ ๋ชป ์ฝ๋๋ค.
- ๋ฉ์ด๋ธ์ด ๋น๋ ์ ๋์์ ์ ์ถ๊ฐํ๋ฉด ๋จ(๊ทนํ ๋๋ญ)
- project facets ์์ java , webmodule ๋ฒ์ 16 , 4.0 ๋ฒ์ ์ผ๋ก ๋ฐ๊ฟ๋ผ
- 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 : ๋ก๊ทธ ์ด๋ฒคํธ๋ฅผ ์ต๋ ์๋ฆฟ์๋ก ์ ๊ณต๋ฐ์ ๊ธฐ๋ก(์ผ์ชฝ ์ ๋ ฌ)
- appender : ๋ก๊ทธ ์ ๋ฌ ๋ฐฉ์(๋ก๊ทธ๋งค์ฒด)๊ณผ ๋ก๊ทธ ํ์์ ์ค์ ํ๋ ์๋ฆฌ๋จผํธ(์ด๋์ ์ด๋ป๊ฒ ๊ธฐ๋กํ ์ง)
- Appenders
- log4j : ์ฅ์น์ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ๋ ๋ก๊ทธ ๊ตฌํ ํ๋ก๊ทธ๋จ
logger : ๊ธฐ๋ก์(appender)๋ฅผ ์ด์ฉํ์ฌ ๋ก๊ทธ๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ์๋ฆฌ๋จผํธ
- name ์์ฑ : ๊ธฐ๋ก์(Appender)๋ฅผ ์ด์ฉํ์ฌ ๋ก๊ทธ๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ์๋ฆฌ๋จผํธ
- additivity ์์ฑ : false ๋๋ true ์ค ํ๋๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
- ⇒ false : root ์๋ฆฌ๋จผํธ์ appender ์ ์ธ, true(๊ธฐ๋ณธ๊ฐ) : root ์๋ฆฌ๋จผํธ์ appender ์ถ๊ฐ
- level : ๋ก๊ทธ ์ด๋ฒคํธ๋ฅผ ์ค์ ํ๊ธฐ ์ํ ์๋ฆฌ๋จผํธ
- value ์์ฑ: ๋ก๊ทธ ์ด๋ฒคํธ๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์
๋ก๊ทธ ๊ตฌํ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋ค.
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 |