DAY 22
πΒ μ€λ μ½μ λ²μ : 8. κ²½κ³(143~152p)
π€Β μ±
μμ κΈ°μ΅νκ³ μΆμ λ΄μ©
μΈλΆ μ½λ μ¬μ©νκΈ°
- μΈν°νμ΄μ€ μ 곡μ: λ λ§μ νκ²½μ λν μ μ©μ± λνλ € μ μ
- μΈν°νμ΄μ€ μ¬μ©μ: μμ μ μꡬμ μ§μ€νλ μΈν°νμ΄μ€ λ§λ€κΈ°λ₯Ό λ°λ
μλ‘μ΄ ν΄λμ€λ‘ κ²½κ³ κ°μΈκΈ° eg) Map
- Map μ΄ λ°ννλ Objectλ₯Ό μ¬λ°λ₯Έ μ νμΌλ‘ λ³νν μ±
μμ μ¬μ©νλ ν΄λΌμ΄μΈνΈμ μλ€
Map sensors = new HashMap();
...
Sensor s = (Sensor)sensors.get(sensorId);
- Genericμ μ¬μ©νλ©΄ κ°λ
μ± μ¦κ°
Map<String, Sensor> sensors = new HashMap<Sensor>();
...
Sensor s = sensors.get(sensorId);
- μ¬μ ν
Map<String, Sensor>
κ° νμνμ§ μμ κΈ°λ₯κΉμ§ μ 곡
- Map μΈν°νμ΄μ€κ° λ³ν κ²½μ° μμ ν μ½λκ° λ§μμ§
- Generic μ¬μ©μ¬λΆλ₯Ό Sensors μμμ κ²°μ νμ
public class Sensors {
private Map sensors = new HashMap();
public Sensor getById(String id) {
return (Sensor) sensors.get(id);
}
}
- κ²½κ³ μΈν°νμ΄μ€μΈ Mapμ Sensors μμΌλ‘ μ¨κΉμΌλ‘μ Map μΈν°νμ΄μ€κ° λ³ν΄λ λλ¨Έμ§ νλ‘κ·Έλ¨μ μν₯μ λ―ΈμΉμ§μμ
- Sensors ν΄λμ€λ νμν μΈν°νμ΄μ€λ§ μ 곡
- 무쑰건 μΊ‘μν νλΌλ μλ¦¬κ° μλλΌ Map κ³Ό κ°μ μΈν°νμ΄μ€λ₯Ό μ¬κΈ°μ κΈ° λκΈ°μ§ λ§λΌλ μ리
κ²½κ³ μ΄νΌκ³ μ΅νκΈ°
νμ΅ ν
μ€νΈ
: μΈλΆ ν¨ν€μ§λ₯Ό κ°μ Έμμ 곧λ°λ‘ μ°λ¦¬μͺ½ μ½λλ₯Ό μμ±νλ λμ κ°λ¨ν ν
μ€νΈ μΌμ΄μ€λ₯Ό μμ±ν΄ μΈλΆ μ½λλ₯Ό μ΅νμ
- ν΅μ λ νκ²½μμ APIλ₯Ό μ¬μ©νλ €λ λͺ©μ μλ§ μ΄μ μ λ§μΆ° ν
μ€νΈ μ§ν
log4j μ΅νκΈ°
- ν
μ€νΈλ₯Ό μ°μ μμ±νμ¬ νμν μ¬μ©λ² νμ
@Test
public void testLogCreate() {
Logger logger = Logger.getLogger("MyLogger");
logger.info("hello");
}
@Test
public void testLogAddAppender() {
Logger logger = Logger.getLogger("MyLogger");
ConsoleAppender appender = new ConsoleAppender();
logger.addAppender(appender);
logger.info("hello");
}
- μΆλ ₯ μ€νΈλ¦Όμ΄ μλ€
@Test
public void testLogAddAppender() {
Logger logger = Logger.getLogger("MyLogger");
logger.removeAllAppenders();
logger.addAppender(new ConsoleAppender(
new PatternLayout("%p %t %m%n"),
ConsoleAppender.SYSTEM_OUT));
logger.info("hello");
}
- μ¬μ€ ConsoleAppender.SYSTEM_OUT κ° μμ΄λ λλ€.
public class LogTest {
private Logger logger;
@Before
public void initialize() {
logger = Logger.getLogger("logger");
logger.removeAllAppenders();
Logger.getRootLogger().removeAllAppenders();
}
@Test
public void basicLogger() {
BasicConfigurator.configure();
logger.info("basicLogger");
}
@Test
public void addAppenderWithStream() {
logger.addAppender(new ConsoleAppender(
new PatternLayout("%p %t %m%n"), ConsoleAppender.SYSTEM_OUT));
logger.info("addAppenderWithStream");
}
@Test
public void addAppenderWithoutStream() {
logger.addAppender(new ConsoleAppender(new PatternLayout("%p %t %m%n")));
logger.info("addAppenderWithoutStream");
}
}
νμ΅ ν
μ€νΈλ κ³΅μ§ μ΄μμ΄λ€
- ν¬μνλ λ
Έλ ₯λ³΄λ€ μ»λ μ±κ³Όκ° ν¬λ€
- ν¨ν€μ§ μ λ²μ μ΄ λμ¬ λλ§λ€ μλ‘μ΄ μν λ°μ
- μ€μ μ½λμ λμΌν λ°©μμΌλ‘ μΈν°νμ΄μ€λ₯Ό μ¬μ©νλ κ²½κ³ ν
μ€νΈ νμ
μμ§ μ‘΄μ¬νμ§ μλ μ½λλ₯Ό μ¬μ©νκΈ°
- μλ μ½λμ λͺ¨λ₯΄λ μ½λλ₯Ό λΆλ¦¬νλ κ²½κ³
- μλνΈ μΈν°νμ΄μ€κ° μ μ λμ§ μμκ±°λ μμ§ λͺ¨λ₯΄λ μ§μμΌ κ²½μ°, μ체μ μΌλ‘ μ°λ¦¬κ° λ°λΌλ μΈν°νμ΄μ€λ₯Ό μ μ
- λμ€μ μ μ°¨ μ€κ° API λ₯Ό ꡬννμ¬ κ°κ·Ήμ λ©μ
κΉ¨λν κ²½κ³
- μ€κ³κ° μ°μνλ€λ©΄ ν¬μμ μ¬μμ
μ΄ ν¬μ§ μμ
- ν΅μ νμ§ λͺ»νλ μ½λμΌ κ²½μ° λ§μ ν¬μμ ν₯ν λ³κ²½ λΉμ© λ°μ
- μΈλΆ ν¨ν€μ§λ₯Ό νΈμΆνλ μ½λλ₯Ό κ°λ₯ν μ€μ¬ κ²½κ³λ₯Ό κ΄λ¦¬
- μλ‘μ΄ ν΄λμ€λ‘ κ²½κ³λ₯Ό κ°μΈκ±°λ adapterν¨ν΄μ μ¬μ©ν΄ μ°λ¦¬κ° μνλ μΈν°νμ΄μ€λ₯Ό μ μ°¨ ν¨ν€μ§κ° μ 곡νλ μΈν°νμ΄μ€λ‘ λ³ν
π€Β λ μ€λ₯΄λ μκ°
- μ€ν μμ€ μ§μμ λ°μ λ€μ¬λμΌλ©΄μ μ΄λ»κ²λ 빨리 μ¬μ©ν΄λ³΄λ €λ λ§μ λΏμ΄μλλ° ν
μ€νΈλ₯Ό λ¨Όμ μμ±νλ μ΅κ΄μ κΈΈλ¬μΌ κ² λ€
πΒ μ§λ¬Έ
πΒ μκ° 3μ€ μμ½
- μλ‘μ΄ ν΄λμ€λ‘ κ²½κ³λ₯Ό κ°μΈ νμν μΈν°νμ΄μ€λ§ μ 곡
- μΈλΆ ν¨ν€μ§λ₯Ό μ¬μ©ν λλ νμ΅ ν
μ€νΈ λ¨Όμ
- μμ§ μ‘΄μ¬νμ§ μλ μ½λλ₯Ό μ¬μ©ν λλ λͺ¨λ₯΄λ μ½λλ₯Ό λΆλ¦¬νκ³ μΆνμ Adapter api λ‘ κ°κ·Ήμ λ©μ