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. ์ด์ 1 2 3 4 5 6 ยทยทยท 17 ๋ค์