λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
JAVA μ œλ„€λ¦­(Generics) ν΄λž˜μŠ€μ™€ λ©”μ†Œλ“œ JAVA μ œλ„€λ¦­(Generics) ν΄λž˜μŠ€μ™€ λ©”μ†Œλ“œ πŸ“ λ‹€λ£¨λŠ” λ‚΄μš© μ œλ„€λ¦­μ˜ μ •μ˜ μ œλ„€λ¦­ 클래슀 μ œλ„€λ¦­ λ©”μ†Œλ“œ μ œλ„€λ¦­ μ œν•œ(extends, super) μ™€μΌλ“œ μΉ΄λ“œ μ œλ„€λ¦­ 예 - Collections.sort() μ œλ„€λ¦­(Generics) μ΄λž€? μ œλ„€λ¦­μ€ 클래슀, λ©”μ†Œλ“œμ—μ„œ μ‚¬μš©ν•  데이터 νƒ€μž…μ„ λ‚˜μ€‘μ— ν™•μ •ν•˜λŠ” 기법이닀. λ‚˜μ€‘μ—λΌλŠ” 말은 ν΄λž˜μŠ€λ‚˜ λ©”μ†Œλ“œλ₯Ό μ„ μ–Έν•  λ•Œκ°€ μ•„λ‹Œ μ‚¬μš©ν•  λ•Œ, 즉 μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œλ‚˜ λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ μ •ν•œλ‹€λŠ” μ˜λ―Έμ΄λ‹€. μ œλ„€λ¦­μ˜ μ‚¬μš© 방법과 νŠΉμ§•μ€ λ©”μ†Œλ“œμ˜ λ§€κ°œλ³€μˆ˜μ™€ ꡉμž₯히 μœ μ‚¬ν•œλ°, λ©”μ†Œλ“œμ˜ λ§€κ°œλ³€μˆ˜κ°€ 'κ°’'κ³Ό κ΄€λ ¨λ˜μ–΄ μžˆλ‹€λ©΄ μ œλ„€λ¦­μ€ λ°μ΄ν„°μ˜ 'νƒ€μž…'κ³Ό 관련이 μžˆλ‹€. λ”°λΌμ„œ ν΄λž˜μŠ€μ™€ λ©”μ†Œλ“œκ°€ λ‹€μ–‘ν•œ νƒ€μž…μ„ λ‹€λ£° 수 μžˆλŠ”λ° 이λ₯Ό μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜μ§€ μ•Šκ³  κ΅¬ν˜„ν•˜κ³ μž ν•˜λ©΄ 방법은 .. 2020. 7. 11.
JAVA의 객체 직렬화(Serialization)와 JSON 직렬화 JAVA의 객체 직렬화(Serialization)와 JSON 직렬화 πŸ“ λ‹€λ£¨λŠ” λ‚΄μš© 직렬화와 μ—­μ§λ ¬ν™”μ˜ κ°œλ… ObjectInputStreamκ³Ό ObjectOutputStream Serializable transient 직렬화/μ—­μ§λ ¬ν™”μ˜ κ΅¬ν˜„ serialVersionUID Jackson을 μ΄μš©ν•œ JSON 직렬화 직렬화, μ—­μ§λ ¬ν™”λž€? 직렬화 - 객체에 μ €μž₯된 데이터λ₯Ό I/O μŠ€νŠΈλ¦Όμ— μ“°κΈ°(좜λ ₯) μœ„ν•΄ 연속적인(serial) λ°μ΄ν„°λ‘œ λ³€ν™˜ν•˜λŠ” 것 역직렬화 - I/O μŠ€νŠΈλ¦Όμ—μ„œ 데이터λ₯Ό μ½μ–΄μ„œ(μž…λ ₯) 객체λ₯Ό λ§Œλ“œλŠ” 것 μžλ°”μ—μ„œ 직렬화와 μ—­μ§λ ¬ν™”λŠ” 객체λ₯Ό 파일둜 μ €μž₯ν•˜κ±°λ‚˜ λ„€νŠΈμ›Œν¬λ₯Ό 톡해 μ „μ†‘ν•˜κΈ° μœ„ν•΄ μ œκ³΅λ˜λŠ” κΈ°λŠ₯이닀. κ°μ²΄λŠ” 'μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ˜ 집합'μ΄λ―€λ‘œ 객체λ₯Ό μ €μž₯/μ „μ†‘ν•˜λŠ” 것은 객체의 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ˜ 값을.. 2020. 7. 10.
μžλ°” Object 클래슀 정리 - toString(), equals(), hashCode(), clone() μžλ°” Object 클래슀 정리 - toString(), equals(), hashCode(), clone() Object 클래슀 - java.lang.Object - λͺ¨λ“  클래슀의 μ΅œμƒμœ„ 클래슀 Object ν΄λž˜μŠ€λŠ” μžλ°”μ—μ„œ μ œκ³΅ν•˜λŠ” μ€‘μš”ν•œ 클래슀 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. java.lang.Object ν΄λž˜μŠ€λŠ” λͺ¨λ“  클래슀의 μ΅œμƒμœ„ 클래슀둜 λͺ¨λ“  ν΄λž˜μŠ€λŠ” Object 클래슀λ₯Ό μƒμ†λ°›μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λͺ¨λ“  ν΄λž˜μŠ€λŠ” Object 클래슀의 λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•  수 있고 일뢀 λ©”μ†Œλ“œλ₯Ό overrideν•΄μ„œ μ‚¬μš©ν• μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 단, λ‹Ήμ—°νžˆ final λ©”μ†Œλ“œλŠ” overrideν•  수 μ—†μŠ΅λ‹ˆλ‹€. Object ν΄λž˜μŠ€κ°€ λ“€μ–΄μžˆλŠ” java.lang νŒ¨ν‚€μ§€λŠ” μ»΄νŒŒμΌλŸ¬μ— μ˜ν•΄ μžλ™μœΌλ‘œ importλ©λ‹ˆλ‹€. κ·Έλž˜μ„œ java.lang νŒ¨ν‚€μ§€μ— μžˆλŠ”.. 2020. 6. 30.
[JAVA λ””μžμΈ νŒ¨ν„΄] ν…œν”Œλ¦Ώ λ©”μ†Œλ“œ νŒ¨ν„΄ [JAVA λ””μžμΈ νŒ¨ν„΄] ν…œν”Œλ¦Ώ λ©”μ†Œλ“œ νŒ¨ν„΄ - ν”„λ ˆμž„μ›Œν¬μ—μ„œ ν”ν•˜κ²Œ μ‚¬μš©λ˜λŠ” 섀계 기법 쀑 ν•˜λ‚˜ - abstract, final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ κ΅¬ν˜„ - final λ©”μ†Œλ“œμ™€ abstract λ©”μ†Œλ“œλ‘œ 둜직의 νλ¦„λ§Œμ„ μ •μ˜ν•˜κ³  ꡬ체적인 κ΅¬ν˜„μ€ ν•˜μœ„ ν΄λž˜μŠ€μ— μœ„μž„ ν…œν”Œλ¦Ώ λ©”μ†Œλ“œ νŒ¨ν„΄μ€ ν”„λ ˆμž„μ›Œν¬μ—μ„œ ν”ν•˜κ²Œ μ‚¬μš©λ˜λŠ” 섀계 기법 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. μš°μ„  ν…œν”Œλ¦Ώ λ©”μ†Œλ“œλž€ ν”„λ‘œκ·Έλž¨ μ „μ²΄μ˜ 흐름(μ‹œλ‚˜λ¦¬μ˜€)λ₯Ό μ •μ˜ν•œ λ©”μ†Œλ“œμž…λ‹ˆλ‹€. final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ overrideν•  수 μ—†κ²Œ ν•˜λŠ” 것이 νŠΉμ§•μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν…œν”Œλ¦Ώ λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•œ ν…œν”Œλ¦Ώ λ©”μ†Œλ“œ νŒ¨ν„΄μ€ abstract ν΄λž˜μŠ€μ—μ„œ abstract λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•΄μ„œ 전체 흐름을 μ •μ˜ν•˜κ³  ꡬ체적인 각 λ©”μ†Œλ“œμ˜ κ΅¬ν˜„μ€ ν•˜μœ„ ν΄λž˜μŠ€μ— μœ„μž„ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. ν•˜μœ„ν΄λž˜μŠ€ λ§ˆλ‹€ μ„Έ.. 2020. 6. 26.
[JAVA λ””μžμΈ νŒ¨ν„΄] static을 μ‘μš©ν•œ 싱글톀 νŒ¨ν„΄(Singleton Pattern) κ΅¬ν˜„ [JAVA λ””μžμΈ νŒ¨ν„΄] static을 μ‘μš©ν•œ 싱글톀 νŒ¨ν„΄(Singleton Pattern) κ΅¬ν˜„ 클래슀 λ‚΄μ˜ λ³€μˆ˜μ— static ν‚€μ›Œλ“œλ₯Ό 뢙이면 κ·Έ 클래슀의 μΈμŠ€ν„΄μŠ€λ“€μ΄ κ³΅μœ ν•˜λŠ” 클래슀 λ³€μˆ˜κ°€ λ©λ‹ˆλ‹€. λ‹€μŒ 예제λ₯Ό λ΄…μ‹œλ‹€. μ‚¬μš©μž 클래슀 User둜 μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ λ§ˆλ‹€ 첫 번째 μΈμŠ€ν„΄μŠ€μ—λŠ” 1001을, 두 번째 μΈμŠ€ν„΄μŠ€μ—λŠ” 1002, λ‹€μŒμ€ 1003, ... μ΄λŸ°μ‹μœΌλ‘œ 1000λΆ€ν„° μ‹œμž‘ν•΄μ„œ μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œλ§ˆλ‹€ 1μ”© μ¦κ°€μ‹œμΌœ idλ₯Ό λΆ€μ—¬ν•΄μ£Όλ €κ³  ν•©λ‹ˆλ‹€. /* μ‚¬μš©μž 클래슀 */ public class User { private static Long serialNumber = 1000L; private Long userId; private String userName; public User(St.. 2020. 6. 18.
Spring MVC - @PropertySource μ‚¬μš© 쀑 FileNotFoundException: Could not open ServletContext resource μ—λŸ¬ Spring MVC - @PropertySource μ‚¬μš© 쀑 FileNotFoundException: Could not open ServletContext resource μ—λŸ¬ βš™οΈ Spring Web MVC 5.2.6.RELEASE μŠ€ν”„λ§ μ›Ή MVC ν”„λ‘œμ νŠΈμ—μ„œ ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•˜λ‹€κ°€ λ‹€μŒκ³Ό 같은 μ—λŸ¬κ°€ λ°œμƒν•˜μ˜€λ‹€. java.io.FileNotFoundException: Could not open ServletContext resource [/properties/data1.properties] ν”„λ‘œμ νŠΈμ˜ ν”„λ‘œνΌν‹° 파일 μœ„μΉ˜λŠ” src/main/resources/properties/data1.properties 메이븐 ν”„λ‘œμ νŠΈμ΄κΈ° λ•Œλ¬Έμ— λΉŒλ“œν•˜λ©΄ resources λ‚΄μ˜ νŒŒμΌλ“€μ΄ classpath둜 λ³΅μ‚¬λœλ‹€... 2020. 5. 6.
[IntelliJ] Spring Web MVC ν”„λ‘œμ νŠΈ 생성 및 μ„ΈνŒ… - μžλ°” μ„€μ • μ‚¬μš© [IntelliJ] Spring Web MVC ν”„λ‘œμ νŠΈ 생성 및 μ„ΈνŒ… - μžλ°” μ„€μ • μ‚¬μš© 1. ν”„λ‘œμ νŠΈ 생성 μƒˆλ‘œμš΄ Maven ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•œλ‹€. Create from archetype 체크, maven-archetype-webapp을 μ„ νƒν•˜κ³  Next 클릭 ν”„λ‘œμ νŠΈ 정보 μž…λ ₯ν•˜κ³  Next 클릭 μ‚¬μš©ν•  Maven 선택 ν›„ Finish 클릭 기본으둜 μƒμ„±λ˜λŠ” pom.xml 4.0.0 com.atoz_develop project03 1.0-SNAPSHOT war project03 Maven Webapp http://www.example.com UTF-8 1.7 1.7 junit junit 4.11 test project03 maven-clean-plugin 3.1.0 maven-resources-plugi.. 2020. 5. 1.
[IntelliJ] Spring Web MVC ν”„λ‘œμ νŠΈ 생성 및 μ„ΈνŒ… - XML μ„€μ • μ‚¬μš© [IntelliJ] Spring Web MVC ν”„λ‘œμ νŠΈ 생성 및 μ„ΈνŒ… - XML μ„€μ • μ‚¬μš© πŸ’‘ 버전 : JDK8 / Spring MVC 5.2.6.RELEASE / Tomcat 9 1. ν”„λ‘œμ νŠΈ 생성 μƒˆλ‘œμš΄ Maven ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•œλ‹€. Create from archetype 체크, maven-archetype-webapp을 μ„ νƒν•˜κ³  Next 클릭 ν”„λ‘œμ νŠΈ 정보 μž…λ ₯ν•˜κ³  Next 클릭 μ‚¬μš©ν•  Maven 선택 ν›„ Finish 클릭 기본으둜 μƒμ„±λ˜λŠ” pom.xml 4.0.0 com.atoz_develop project03 1.0-SNAPSHOT war project03 Maven Webapp http://www.example.com UTF-8 1.7 1.7 junit junit 4.11 test proje.. 2020. 5. 1.
μŠ€ν”„λ§ JDBC ν”„λ‘œκ·Έλž˜λ° - MyBatis 연동 μŠ€ν”„λ§ JDBC ν”„λ‘œκ·Έλž˜λ° - MyBatis 연동 이 κΈ€μ—μ„œλŠ” Oracle DB 11gλ₯Ό μ‚¬μš©ν•œλ‹€κ³  κ°€μ •ν•œλ‹€. λ‹€λ₯Έ DBλ₯Ό μ‚¬μš©ν•΄λ„ λ¬΄λ°©ν•˜λ‹€. MyBatis - Spring JDBC ν”„λ‘œκ·Έλž˜λ°μ„ μ‰½κ²Œ μž‘μ—…ν•  수 μžˆλ„λ‘ λ§Œλ“  라이브러리 - Mapper의 역할을 ν™•μž₯ν•˜μ—¬ 쿼리문 μž‘μ„±μ„ λͺ¨λ‘ Mapperμ—μ„œ ν•  수 μžˆλ„λ‘ μ§€μ›ν•œλ‹€. μ˜μ‘΄μ„± μΆ”κ°€ Spring JDBC, Oracle JDBC λ“œλΌμ΄λ²„, Apache Commons DBCP와 MyBatis 라이브러리 μ˜μ‘΄μ„±μ„ μΆ”κ°€ν•œλ‹€. org.springframework spring-jdbc 5.1.9.RELEASE com.oracle ojdbc6 11.2.0.3 org.apache.commons commons-dbcp2 2.7.0 org.mybatis mybati.. 2020. 4. 28.
μŠ€ν”„λ§ JDBC ν”„λ‘œκ·Έλž˜λ° - JdbcTemplate μŠ€ν”„λ§ JDBC ν”„λ‘œκ·Έλž˜λ° - JdbcTemplate Spring FrameworkλŠ” JDBC ν”„λ‘œκ·Έλž˜λ°μ„ μœ„ν•΄ JdbcTemplate 클래슀λ₯Ό μ œκ³΅ν•˜λ©° JdbcTemplate ν΄λž˜μŠ€λŠ” μ†μ‰½κ²Œ DB와 연동할 수 μžˆλ„λ‘ κ΅¬ν˜„λ˜μ–΄ μžˆλ‹€. 이 κΈ€μ—μ„œλŠ” Oracle DB 11gλ₯Ό μ‚¬μš©ν•œλ‹€κ³  κ°€μ •ν•œλ‹€. λ‹€λ₯Έ DBλ₯Ό μ‚¬μš©ν•΄λ„ λ¬΄λ°©ν•˜λ‹€. μ˜μ‘΄μ„± μΆ”κ°€ Spring JDBC, Oracle JDBC λ“œλΌμ΄λ²„, Apache Commons DBCP 라이브러리 μ˜μ‘΄μ„±μ„ μΆ”κ°€ν•œλ‹€. org.springframework spring-jdbc 5.1.9.RELEASE com.oracle ojdbc6 11.2.0.3 org.apache.commons commons-dbcp2 2.7.0 Oracle JDBC λ“œλΌμ΄λ²„λ₯Ό κ΄€λ¦¬ν•˜λŠ” λ ˆνŒŒμ§€ν† λ¦¬.. 2020. 4. 27.
[AspectJ Weaver] execution μ§€μ‹œμž μ„€μ • 방법 정리 [AspectJ Weaver] execution μ§€μ‹œμž μ„€μ • 방법 정리 Execution μ§€μ‹œμž Execution μ§€μ‹œμž μ„€μ • 방법 - Pointcut을 지정할 λ•Œ μ‚¬μš©ν•˜λŠ” 문법 - ν˜•μ‹ : execution(λ¦¬ν„΄νƒ€μž… ν΄λž˜μŠ€μ΄λ¦„ λ©”μ†Œλ“œμ΄λ¦„(λ§€κ°œλ³€μˆ˜)) - λ¦¬ν„΄νƒ€μž… ➑️ λ©”μ†Œλ“œμ˜ 리턴 νƒ€μž… - 클래슀 이름 ➑️ νŒ¨ν‚€μ§€λ₯Ό ν¬ν•¨ν•œ 클래슀 이름 / νŒ¨ν‚€μ§€ μƒλž΅ μ‹œ λͺ¨λ“  νŒ¨ν‚€μ§€ / 클래슀 μƒλž΅ μ‹œ λͺ¨λ“  클래슀 - λ©”μ†Œλ“œ 이름 ➑️ λ©”μ†Œλ“œμ˜ 이름 - λ§€κ°œλ³€μˆ˜ ➑️ λ§€κ°œλ³€μˆ˜μ˜ ν˜•νƒœ μ™€μΌλ“œμΉ΄λ“œ * ➑️ ν•˜λ‚˜μ˜ λͺ¨λ“  것을 의미 .. ➑️ 개수 상관없이 λͺ¨λ“  것을 의미 예) execution(void com.atoz_develop.beans.TestBean1.method1()) ➑️ λ¦¬ν„΄νƒ€μž… void, com.atoz_d.. 2020. 4. 27.
AspectJ Weaverλ₯Ό μ‚¬μš©ν•œ μ• λ…Έν…Œμ΄μ…˜ 기반의 μŠ€ν”„λ§ AOP κ΅¬ν˜„ 방법 AspectJ Weaverλ₯Ό μ‚¬μš©ν•œ μ• λ…Έν…Œμ΄μ…˜ 기반의 μŠ€ν”„λ§ AOP κ΅¬ν˜„ 방법 AOPλž€? - Aspect Oriented Programming : 관점 지ν–₯ ν”„λ‘œκ·Έλž˜λ° - OOP 와 λΆ„λ¦¬λœ κ°œλ…μ΄ μ•„λ‹ˆλΌ, OOP에 기초λ₯Ό λ‘λŠ” ν”„λ‘œκ·Έλž˜λ° 방식 - ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ„ 관점(ν˜Ήμ€ 관심사)λΌλŠ” 논리적인 λ‹¨μœ„λ‘œ λΆ„λ¦¬ν•˜μ—¬ κ΄€λ¦¬ν•˜λŠ” κ°œλ… - λ‘œκΉ…, 감사, 선언적 νŠΈλžœμ μ…˜, λ³΄μ•ˆ, 캐싱 λ“± λ‹€μ–‘ν•œ κ³³μ—μ„œ μ‚¬μš©λœλ‹€. AOP μš©μ–΄ - Joint Point : λͺ¨λ“ˆμ΄ μ‚½μž…λ˜μ–΄ λ™μž‘ν•˜κ²Œ λ˜λŠ” νŠΉμ • μœ„μΉ˜(λ©”μ„œλ“œ 호좜 λ“±) - Point Cut : λ‹€μ–‘ν•œ Joint Point 쀑에 μ–΄λ–€ 것을 μ‚¬μš©ν• μ§€ 선택 - Advice : Joint Point에 μ‚½μž…λ˜μ–΄ λ™μž‘ν•  수 μžˆλŠ” μ½”λ“œ - Weaving : Adviceλ₯Ό 핡심 둜직 μ½”λ“œ.. 2020. 4. 27.