본문 바로가기

JAVA

(18)
프로젝트 만들기 본격적으로 프로젝트를 만들기에 앞서 몇 가지 셋팅을 먼저 해보려고 한다. 우선 스프링에서는 어노테이션을 붙여서 스캔하는 파일을 제한할 수 있다. 컨트롤러 클래스를 만들어서 스캔하는 파일을 제한한다. 컨트롤러 -스프링이 패키지이름 이하를 스캔하여 모든 파일을 메모리에 new 하는게 아닌 특정 어노테이션이 붙어있는 클래스 파일만을 new해서(IOC) 컨테이너에서 관리해준다. @RestController public class BlogControllerTest { //주소 이름을 입력받음 //http://localhost:8080/test/hello @GetMapping("/test/hello") public String hello() { return "hello Spring boot"; } } MySQL 환..
[스프링] 패키지 이름, UTF-8 스프링과 패키지 이름(제어의 역전) 스프링부트에서 패키지를 만들때에는 이름을 com.seo.blog 이하로 만들어야 한다. 스프링은 제어의 역전을 해서 스프링이 직접 객체를 new해서 메모리에 띄우기 때문이다. 싱글톤 패턴 : 레퍼런스 변수를 스프링이 관리해주겠다는 것 기존의 자바에서는 클래스를 new 하면 메모리 안에 공간을 만들고 클래스 변수가 가리키게 된다. 클래스의 메소드는 스택 메모리에 띄워지며 호출이 되면 메모리 안에 만들어지고 호출이 종료되면 메모리에서 사라진다. 지역변수 -> 스택 전역변수 -> 힙 스택에서 객체를 만들면 결국 지역변수가 관리하기 때문에 다른 스택에서 공유하여 사용할 수 없고, 메소드 내의 변수에 접근하기가 어려워진다. 따라서 전역변수로 선언해서 힙으로 관리하는 등의 방법을..
JAVA(1) 자바를 시작하기 전에 자바란? 프로그래밍 언어로 컴퓨터 프로그램을 만드는데 사용한다. 자바는 프로그램을 만드는 것 뿐만 아니라 실행환경, 개발도구, 라이브러리를 제공한다. *라이브러리란 프로그램을 개발하는 데 필요한 기능들을 미리 만들어놓은 것으로, 우리가 프로그램을 만드는데 자주 쓰일만한 것들을 남들이 미리 만들어놓은 기능 자바로 만들수 있는 프로그램에는 PC 애플리케이션(eclipse) 웹 애플리케이션(Spring) 모바일 애플리케이션(안드로이드) 빅 데이터(hadoop) 게임(마인 크래프트), 과학, 소형기기 등이 있다. 자바의 특징 1. 객체지향 언어이다. 객체지향 언어란? 기존의 프로그래밍 언어에 객체지향 개념을 도입한 것, C++, JAVA, 파이썬, JS 등등 2. 자동 메모리 관리 기능이 있다. 이전에는 사용할..
스프링 컨테이너 스프링 컨테이너의 전체적인 순서는 다음과 같으며, 사용자가 요청하기 전에 서버가 켜져야 하는데 이 때 생기는 일들이다. 서버가 켜지고 톰켓이 실행되면 문지기 역할을 하는 web.xml이 호출되고, 자신이 해야하는 일들을 확인한다. 그 다음에 데이터베이스와 관련된 객체들(모든 스레드가 공유하는 자원)을 컴포넌트 스캔에서 메모리에 올린다. *이 때 root-context 파일이 읽어진다. 이렇게 서버가 로딩이 되면 사용자에게 request 요청이 들어오게 되면서 디스패처 서블릿이 동작하게 되는데, web.xml이 해야하는 역할을 자신이 대신해서 웹과 관련된 자원들을 메모리에 띄우고 주소 분배를 한다. *이때는 servlet-context 파일이 읽어진다. 모든 요청이 끝나면 데이터로 응답할지, html 파일..
스프링부트 JPA 개념잡기 JPA란 무엇인가? +JPA의 장점에 대해서 1. JPA는 Java Persistence API 이다. Persistence(영속성)이란 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 말한다. RAM은 휘발성 데이터를 저장하는 메모리이며, 컴퓨터가 꺼지거나 정전이 되면 데이터는 전부 사라지게 된다. 데이터가 날라가지 않도록 RAM의 소중한 데이터를 비휘발성인 하드디스크에 기록하게 되면 데이터를 영구적으로 저장할 수 있다. 영속성이라는 것, 어떤 데이터가 영구히 기록되게 하는 것이다. 자바에서는 데이터 저장을 파일시스템이나 하드디스크가 아닌 DBMS인 데이터베이스에서 한다. JPA에서 Java Persistence API라는 것은 자바의 데이터를 영구히 기록할 수 있는 환경을..
web.xml과 FrontController 패턴 web.xml이 하는 일 servletContext의 초기 파라미터 생성 session의 유효시간 설정 servlet/jsp에 대한 정의 servlet/jsp 매핑 Mime type 매핑 welcome file list error pages 처리 리스너/필터 설정 보안 (1)servletContext의 초기 파라미터 생성 엄청나게 큰 성이 하나 있는데, 이 성에는 입구가 있고 입구에는 문지기가 한 명 있다. 문지기는 스스로 일을 할 수 없어 관리자는 문지기에게 문서를 던져 일을 시킨다. 그 문서대로 문지기를 일을 하게 되는데 이 문서가 web.xml 파일이다. 첫번째로 하는 일은 servletContext의 초기 파라미터를 생성하는 것이다. 외부에 사람이 들어올 때 문지기는 그 사람에게 암호는 ***라고..
스프링부트의 동작 원리 1. 스프링은 내장 톰켓을 가진다. 톰켓을 따로 설치할 필요 없이 바로 실행가능하다. -소켓과 http 소켓(socket): 운영체제가 가지고 있는 것으로, A라는 대상과 B라는 대상이 서로 메세지를 교환하고 싶을 때 운영체제가 제공해주는 소켓을 이용하게 된다. 처음에 A가 소켓을 연다(open) 오픈한 소켓의 포트번호가 필요한데, B가 A와 통신하고 싶다면 A의 IP주소를 넣으면 연결이 되고, A와 B는 서로 메세지를 주고 받는 통신이 가능해진다. 또 다른 대상인 C가 A와 통신하고 싶다면 B는 이미 소켓이 연결 되어있는 상태라 연결할 수 있는 방법이 없다. 그래서 최초에 연결용도로만 쓰는 포트를 만들고, 연결되는 순간 다른 포트를 만들며, 새로운 소켓을 만들 때는 새로운 스레드를 만든다. 최초에 연결..
스프링이란? 스프링의 기초 개념 1. 스프링은 프레임워크이다. 프레임이란 틀이고 워크는 동작한다는 뜻이다. 즉, 틀 안에서 동작을 한다는 것이다. 틀이 있으면 안에 구슬을 집어넣고 좌우로 움직이거나 위 아래로 움직여도 구슬은 틀을 벗어날 수 없다. 프레임워크란 이 틀을 벗어나지 말라고 정해주는 것이다. "개발자 마음대로 만들지 말고 틀을 제공할테니, 틀에 맞춰서 개발을 하라" 라는 뜻. 2. 스프링은 오픈 소스이다. 오픈소스라는건, 소스코드가 공개되어 있고, 내부를 고칠수도 있다는 것이다. 스프링이 어떻게 만들어져있는지 내부를 볼 수가 있고, 불편한 부분은 고쳐서 기여도 할 수 있다. 3. 스프링은 IOC 컨테이너를 가진다 (*스프링의 핵심이다) IOC란 Inversion of controll의 약자이자, 제어의 역전이라는 뜻이다. 제..