목록전체 글 (206)
gimmickbutreal

@Controller Controller 클래스에 @Controller 애너테이션(어노테이션,Annotation)을 작성하는 이유는 무엇일까? 해당 애노테이션이 적용된 클래스가 Controller임을 나타내주면서 bean으로 등록돼 해당 클래스가 Controller로 사용됨을 Spring Boot Framework에 알려주는 역할을 합니다. 여기서 bean이란 Spring Boot 컨테이너가 관리하는 자바 객체를 의미합니다. 스프링의 특징 중 하나인 제어의 역전(IoC)가 있는데, 객체의 생성 및 제어권을 사용자가 아닌 스프링에게 맡기는 것입니다. 스프링 프레임워크를 사용하기 전에는 사용자가 new 연산을 통해 객체를 생성하고 메소드를 직접 호출해왔습니다. 하지만, 이러한 제어의 역전(IoC)가 적용된 ..

도커를 M1 환경에서 설치하는 방법은 다음과 같습니다. https://www.docker.com/get-started/ Developers - Docker Developer productivity tools and a local Kubernetes environment. www.docker.com 먼저 위 사이트로 접속한 후, Docker Desktop에서 Download for Mac - Apple Chip을 선택해 다운로드하면 됩니다. # MySQL 이미지를 사용해 컨테이너 생성 docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=pass mysql --character-set-server=utf8mb4 --collation-server=u..

데이터베이스를 사용하려면 SQL 쿼리라는 구조화된 질의를 작성하고 실행하는 등의 복잡한 과정이 필요합니다. 이때 ORM을 이용하면 자바 문법만으로도 데이터베이스를 다룰 수 있다. 이때 ORM(object relational mapping)을 이용하면 자바 문법만으로도 데이터베이스를 다룰 수 있습니다. 즉, ORM을 이용하면 개발자가 쿼리를 직접 작성하지 않아도 데이터베이스의 데이터를 처리할 수 있습니다. JPA란? 스프링부트는 JPA(Java Persistence API)를 사용하여 데이터베이스를 처리한다. JPA는 자바 진영에서 ORM의 기술 표준으로 사용하는 인터페이스의 모음입니다. JPA는 인터페이스이며 따라서 인터페이스를 구현하는 실제 클래스가 필요합니다. JPA를 구현한 대표적인 실제 클래스에는..

스프링부트 프로젝트의 전체 구조는 다음과 같다. src/main/java 디렉터리 src/main/java 디렉터리의 com.ll.exam.sbb 패키지는 자바 파일을 작성하는 공간입니다. 자바 파일로는 MainController.java와 같은 스프링부트의 Controller가 있으며 폼과 DTO는 물론 데이터 베이스 처리를 담당하는 Entity, Service 파일도 이에 포함됩니다. 현재 위 사진에는 Controller만 존재합니다. SbbApplication.java 파일 모든 프로그램에는 시작을 담당하는 파일이 있습니다. 마찬가지로, 스프링부트 애플리케이션에도 시작을 담당하는 파일이 있는데 여기서는 SbbApplication.java 파일이 이에 해당합니다. 파일명은 프로젝트명+Applicati..

작업하던 창을 닫았음에도 8080포트가 사용중이라고 나오는 경우가 있습니다. 그럴 경우 아래와 같은 명령어를 터미널에 입력하여 찾아봅니다. 저는 맥 유저이므로 터미널을 사용했습니다. lsof -i tcp:8080 아래와 같이 나오는 걸 확인할 수 있습니다. 그리고 아래 명령어로 8080 포트를 끄도록 하겠습니다. kill $(lsof -t -i:8080) 포트가 정상적으로 꺼진 것을 확인할 수 있습니다. 그 후 개발 환경에서 다시 코드를 run 하게 되면 이 문제로만 인해서 작동이 되지 않았을 경우 정상적으로 서버에 접근이 가능합니다.

SQL SQL 관계형 데이터베이스에서 사용하기 위해 설계된 언어입니다. 표준적인 SQL 명령어들이 있으며 이것은 모든 관계형 데이터베이스에 의하여 지원됩니다. SQL 명령어들은 두 가지의 카테고리로 나누어집니다. 1. 데이터 정의 명령어(Data Definitnion Language) 테이블을 생성하거나 변경합니다. 대표 명령어 : CREATE, ALTER, DROP, USE 2. 데이터 조작 명령어(Data Manipulation Language) 데이터를 추출, 추가, 삭제, 수정합니다. 대표 명령어 : SELECT, INSERT, DELETE, UPDATE SQL이 사용되는 분야 관계를 맺고 있는 데이터가 자주 변경되는 프로그램이나 변경될 여지가 없으며 명확한 스키마가 더 중요할 때 사용하면 좋다..

정의 옵저버 패턴은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴을 말합니다. e.g.) 유튜브 채널을 구독 후 알림설정 버튼을 누르면 유튜브 알림이 뜨게 설계한다고 가정할 경우, 주제 객체는 유튜브 채널, 옵저버는 구독자가 된다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용되며 발행/구독 모델로 알려져 있기도 합니다. 구조 이 패턴의 핵심은 옵저버 또는 리스너(Listener)라고 불리는 하나 이상의 객체를 관찰 대상이 되는 객체에 등록시키는 것입니다. 구현 원리 이벤트를 발생시키는 Class B가 있고, 해당 클래스가 발생하는 이벤트를 수신 받고 싶어하는 Cl..

자바 언어에서는 객체를 통하지 않고 사용할 수 있는 멤버를 생성하는 것이 가능합니다. 이런 기능을 가진 멤버를 Static Member 즉, 정적 멤버라고 합니다. 정적 멤버는 클래스당 하나만 생성돼 모든 객체가 공유할 수 있습니다. 쉽게 비유를 한다면, 하나의 클라우드를 스마트폰, PC 등의 다양한 전자기기로 사용할 수 있습니다. 여기서 클라우드를 Static 변수라고 생각하시면 됩니다. 모든 객체(모든 전자기기)가 하나의 변수(클라우드)를 사용하니까요! 정적(Static)에 대해 제대로 이해하기 위해선 그 반대 개념인 인스턴스(instance)를 알아야 합니다. 먼저 클래스의 멤버는 인스턴스 멤버와 정적 멤버로 나누어집니다. 동일한 클래스를 이용하여 많은 객체들이 생성될 때 각각의 객체(인스턴스)들은..