Java 42

[객체지향] 1. 객체지향

요즘 주로 사용되는 다양한 언어, 프레임워크들은 객체지향 프로그래밍을 지향합니다. 대표적으로 Java-Spring, Python-django, PHP-Laravel 등 다수의 프레임워크들은 객체지향을 기반으로 만들어져있습니다. 심지어 함수형 프로그래밍을 지향하는 Node.js 에서도 상황에 따라 class 사용을 통한 부분적 객체지향을 권장하기도 합니다. 1. 객체지향이란? 모든 사물과 개념을 객체로 정의하여 개발하는 방식 입니다. 모든 객체는 행위와 속성을 가진다는 개념을 바탕으로, 객체를 설계할때는 실제 사물을 기반으로 설계를 합니다. 자동자 객체 속성 : 차종, 현재기어, 속도 ... 행위 : 시동을건다, 속도를높인다, 속도를줄인다, 시동을끈다 ... 그리고 캡슐화, 상속, 다형성, 추상화 등의 특..

Java 2021.07.24

JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가.

목차 JVM이란 무엇인가 컴파일 & 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성 요소 JDK와 JRE의 차이 1. JVM이란 무엇인가 JVM이란 무엇인지 알아보기 전에, JVM이 필요한 이유를 생각해보았다. 왜 JVM이 필요했나요? 1990년대 Sun Microsystems의 'Green Team'은 개개인의 물건에 컴퓨터가 있는 시대를 예감하였습니다. 그래서 냉장고, TV 등과 같은 여러 기기, 플랫폼(OS+CPU아키텍처)에서 동작할 수 있는 언어가 필요하였고, 이는 WORA(Write Once, Run Anywhere)라는 자바의 철학이 만들어지게된 계기였습니다. 이것이 JVM이 필요했던, 탄생했던 이유입니다. 그래서 JVM이 뭔가요? 그래서 JVM이란..

Java 2020.12.16

[Springboot] 1. build.gradle 작성하기

Springboot에서는 Maven대신에 Gradle이라는 빌드&의존성관리 툴을 사용한다. 이전에 Maven을 사용하는 Spring에서는 pom.xml에서 주로 의존성 및 빌드 정보를 관리하였다면, Gradle을 사용하는 Springboot는 build.gradle이라는 파일에서 의존성 및 빌드 정보들을 관리한다. buildscript { ext { springBootVersion = '2.1.9.RELEASE' } repositories { mavenCentral() jcenter() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } /* 이 gradle파일에서 b..

Java/Spring 2019.12.22

[java] 상속, 다중상속

1. 상속 상속이란 자식 객체가 부모 객체의 내용을 물려받는것을 의미한다. 객체 내부 상속받은 객체 패키지 내부 모두 private O X X X protected O O X X default(package) O O O X public O O O O 위 표를 참고해서 설명하면, 자식객체는 부모객체가 private으로 선언한 변수, 메소드를 제외하고는 모두 상속받을 수 있다. 2. 다중상속 객체지향의 상속을 활용하여 객체지향 언어인 C++에서는 다중상속을 허용하고 있지만, Java, C#과 같은 객체지향 언어는 다중상속을 허용하지 않는다. 자바에서 다중상속을 허용하지 않는 이유를 다음 예제코드로 설명을 하겠다. UserService.java 1 2 3 4 5 6 pubilc class UserService..

Java 2019.08.02

[Spring] MyBatis 한글 깨짐 해결법

1. web.xml 설정 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encodingFilter /* Colored by Color Scripter cs 프로젝트의 web.xml에 다음과 같은 필터를 적용해 준다. 이 Filter는 POST로 오는 요청에 대해 인코딩을 수행한다. 만약 GET으로 오는 요청도 한글 처리가 필요하다면, 서버의 Server.xml 설정도 필요하다. Server.xml 설정 1 2 3 cs 2. MyBatis 설정 - db url설정(mysql) 1 url : jd..

Java/Spring 2019.07.22

[Spring] Spring CORS설정

[추천글..] [Sencha] extjs+spring에서 jsonp 적용하기 위 글에서는 cors요청을 위해 jsonp를 적용하였지만, jsonp의 장점이자 결정적인 단점이 있다. 그것은 바로, GET 요청으로 javascript를 요청하고 받는다는 것이다. 이 말은 즉, GET요청만 가능하기 때문에 CRUD(Create Read Update Delete) 기능을 모두 구현하는것은 제한적이다. 일반적으로 Create, Update의 경우 데이터를 전송하기때문에 정보 보호를 위해 POST방식으로 요청을 한다. 그러면 POST방식으로 요청을 하는 방법을 알아야 하는데, 하지만 POST method로 Cross-Origin에 요청을하면, SOP(Same-Origin Polic)에 의해 요청이 제한된다. 하지만..

Java/Spring 2019.07.20

[maven] maven에 대한 좋은 글

http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev:dep:build:maven egovframework:dev:dep:build:maven [eGovFrame] 메이븐은 프로젝트 객체 모델(Project Object Model)이라는 개념을 바탕으로 프로젝트 의존성 관리, 라이브러리 관리, 프로젝트 생명 주기 관리 기능 등을 제공하는 프로젝트 관리 도구이다. 또한 플러그인을 기반으로 소스 코드로부터 배포 가능한 산출물을 만들어 내는 빌드 기능 뿐만 아니라 레포팅 및 documentation 작성 기능 등을 제공한다. Maven 장점 Maven 단점 • 뛰어난 의존성 관리 - 의존성 자동 업데이트 -저장소를 통한 www.egovframe.go.k..

Java 2019.07.04

[Spring] Spring Mybatis 설정

MyBatis를 Spring에서 설정하는 방법을 알아보겠습니다. 사용되는 모듈은 다음과 같습니다. MyBatis 3 3.4.6 JDBC Wrapper로 JDBC로 보다 더 편하게 DB 작업을 수행할 수 있게 해주는 모듈 MyBatis-Spring 1.3.2 MyBatis를 기반으로 기능을 확장한 모듈로, MyBatis와 Spring을 연동해 주는 모듈 MyBatis의 SqlSession 은 기본적으로 Thread-Safe 하지 않습니다. 하지만 MyBatis-Spring 의 SqlSession 을 확장하여 SqlSessionTemplate 이라는 Thread-Safe 한 클래스를 제공하합니다. Spring-jdbc 5.1.5.RELEASE mysql connector java 8.0.13 (DB 버전에 ..

Java/Spring 2019.06.02

Java Exception의 종류와 원인

ClassNotFoundException 클래스를 찾지 못함 CloneNotSupportedException Cloneable 인터페이스 미구현 IllegalAccessException 클래스 접근을 못함 InstantiationException 추상 클래스 또는 인터페이스를 인스턴스화 하고자 할때 InterruptedException 쓰레드가 중단 되었을때 NoSuchFieldException 지정된 필드가 없을때 NoSuchMethodException 지정된 메소드가 없을때 [IOException] CharConversionException 문자 변환에서 예외가 발생했을때 [IOException] EOFException 파일의 끝에 도달했을때 [IOException] FileNotFoundExcept..

Java 2019.05.31

[WAS] Servlet과 WAS 그리고 Spring 컨테이너 실행과정

1. Servlet Servlet의 실행 과정 1. 클라이언트로 부터 들어온 HTTP request를 Servlet Container(Tomcat의 역할)에게 보낸다. 2. Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성한다. 3. 사용자의 요청이 어느 서블릿에 대한 요청인지 찾는다. ㄴweb.xml에 작성된 mapping정보를 통해 확인. ㄴ서블릿에 명시된 매핑정보를 통해 찾는다. => @WebServlet("/myservlet") 4. Servlet Container는 서블릿의 service메소드를 호출 ㄴPOST-GET 여부에 따라 doGet() 혹은 doPost()가 호출된다. 5. doGet() 혹은 doPost()를 통해..

Java/Spring 2019.05.30