개발 공부 기록/02. Spring Boot 10

[SpringBoot] 프로젝트 만들 때 들어가는 Group? Artifact? 얘내는 뭐지?

서론 맨날 스프링 부트 프로젝트를 만들면서도, Group, Artifact, 이런 놈들이 뭔지도 모르고 사용했던게 생각나서, 이 기회에 정리해서 적어두려고 한다. 본론 이다 그래서 Package name 이 Group + Artifact 인 것이다.. 결론 결론은 Group => 회사명을 의미하고, Artifact => 프로젝트 이름을 의미한다. 별 뜻은 없다..

Spring Boot에서 MQTT 사용해보기

MQTT란? Message Queue for Telemetry Transport로써, IoT기기와 게이트웨이가 통신하기 위해 만들어진 프로토콜이다. MQTT의 특징 Connection oriented: 연결된 클라이언트와 브로커 간에 지속적인 연결을 유지하기 위한 세션을 사용 퍼블리셔(publisher)와 서브스크라이버(subscriber) : 퍼블리셔는 특정 주제(Topic)에 대한 메세지를 보내고, 서브스크라이버는 그 주제(Topic)를 구독하여 메세지를 받는다. 브로커(Borker): MQTT 메세지를 중개하고 관리하는 서버. 클라이언트(퍼블리셔 역할을 함)는 브로커에 연결하여 메세지를 발행 or 수신한다. QOS(Quality of Service): 메시지의 전달 품질을 나타내는 등급. 0, 1,..

Mybatis 기본적인 사용법 정리

Mybatis 사용법 보통 mybatis는 2가지 사용법이 있다고 한다. 1. Java 코드에 SQL을 작성하기 2. XML 안에 SQL을 작성하기 요즘 빌드파일도 xml이 아닌 kotlin으로 지원하는 형국이니 2번은 차차 알아보고 일단 1번부터 알아보도록 하겠다. 1. 테이블 생성 위와 같은 테이블을 만들었다. 이름은 computer라고 하자. 2. Mapper 인터페이스 생성 repository 하위에 computer 패키지를 생성해주고, @Mapper public interface ComputerMapper { //CRUD 작성 @Select("SELECT * FROM computer") List findAll(); } 위와같이 작성해준다. 3. Computer 클래스 작성 및 컨트롤러 작성 Co..

SpringBoot와 MongoDB 연동하기

1. mongoDB설치 Try MongoDB Community Edition Try MongoDB Community Edition on premise non-relational database including the Community Server and Community Kubernetes Operator for your next big project! www.mongodb.com 에서 MongoDB Community Server를 받아 설치해준다. 보통 mongoDB compass도 같이 설치할 것인데, 위와같이 Databases쪽에 사용할 db를 생성해준다. 또한, RDB의 Table과 비슷한 개념인 Collection(콜렉션)을 생성해준다. 2. Spring Boot 프로젝트 생성 MongoDB ..

JPA, Hibernate, Spring Data JPA란?

Spring Boot에서 SQL을 직접 사용하는 것은 단점이 존재한다. SQL을 작성하기 때문에 실수할 수 있고, 실수 인지 시점이 느리다. 컴파일 에러가 안나고, 런타임 오류가 나기 때문이다. 즉, 서버 동작에는 SQL문의 오타는 아무런 지장이 없기 떄문이다. 특정 데이터베이스에 종속적이게 된다. 반복작업이 많아진다. 데이터베이스의 테이블과 객체는 패러다임이 다르다 ( 상속, 연관관계 등) => 이를 해결하기 위해 만든것이 JPA다. JPA? Java Persistence API의 약자로 자바 진영의 ORM이다. Persistence : 영속성, 서버가 재시작되어도 데이터는 영구적으로 저장되는 속성 (데이터베이스 등) ORM? Object-Relational Mapping, 즉 자바 클래스(객체)와 테..

스프링 컨테이너를 다루는 방법

스프린 컨테이너에 빈을 등록하는 방법, 가져오는 방법에 대해 알아보자 빈을 등록하는 방법 @Service, @Repository, @Controller 말고도 다음 두개의 어노테이션을 활용해 스프링 빈으로 등록할 수 있다. @Configuration: 클래스에 붙이는 어노테이션으로, @Bean을 사용할 때 함께 사용해 주어야 한다. @Bean: 메소드에 붙이는 어노테이션, 메소드에서 반환되는 객체를 스프링 빈에 등록한다. 아래 예시 코드를 보자. @Repository public class UserRepository { } 원래는 위와 같이 @Repository 어노테이션을 통해 빈으로 등록한다. 허나 @Configuration public class UserConfiguration { @Bean pub..

스프링 빈과 스프링 컨테이너란?

간단한 코드를 하나 작성해 보겠다. @RestController public class Controller { private final Service Service; public Controller(JdbcTemplate jdbcTemplate) { Service = new Service(jdbcTemplate); } } Java에서는 static이 아닌 이상 인스턴스화 해줘야 하는데, 이 Controller 코드에는 인스턴스화가 없다. Controller를 생성하기 위해선 JdbcTemplate가 필요하다. 이를 JDBC 템플릿에 의존한다. 는 것인데, JdbcTemplate클래스를 설정해 준적이 없다. 스프링에서 위와 같은 설정을 해주는 것은 스프링 빈이다. @RestControll 어노테이션은, 해..

Spring Boot에서 Database 접근해서 사용하기

내가 아닌 스프링이 디비에 접근할 수 있도록 해보자. 스프링 서버가 디비에 접근하기 위해선, application.yml 파일이 있어줘야 한다. src/main/resources에 application.yml을 생성해주자. application.yml을 다음과 같이 작성한다. 이후, controller 코드를 다음과 같이 작성해준다. JdbcTemplate 클래스를 통해 MySQL에 SQL을 보낼 수 있다. sql을 parameterized query하여 보안성을 높이고, 확장성을 넓혀준다. 이러면, DB에 저장이 잘 됨을 확인할 수 있다.

SpringBoot 환경에서 API 만들어보기 - GET, POST

스프링 부트에서 API를 개발하려고 하는 클래스에는 가장 위에 @RestController를 적어줘야 한다. @RestController에서 getter가 있는 객체를 반환하면 JSON으로 반환해준다. 이는 클래스를 api의 진입 지점으로 만드는 것이고, 이 클래스 안에 메소드에 접근할 수 있다. 1. GET API 만들기 아래는 간단한 덧셈을 하는 코드이다. @RestController public class CalculatorController { @GetMapping("/add") // GET /add public int addTwoNumbers(@RequestParam int number1, @RequestParam int number2){ return number1 + number2; } } @..

@SpringBootApplication과 서버

1. 어노테이션(Annotation)? Java에서 annotation은 메타데이터이며, 여러 일을 자동으로 해주는 것이다. 2. @SpringBootApplication? 스프링을 실행시키기 위해 필요한 다양한 설정들을 모두 자동으로 해주는 어노테이션인 것이다. 3. 서버란? 어떠한 기능을 제공하는 프로그램이자 실행하는 컴퓨터 자체 회원가입 기능 / 정보 불러오기 기능 / 좋아요 기능 등등.. 4. 네트워크란? 서버에 요청을 하기 위해선 인터넷으로 요청을 해야한다. 그러므로 데이터를 주고 받을 수 있는 네트워크 (IP주소, DNS, port) 개념이 생겨났다. 5. HTTP와 API란? 네트워크를 통한 컴퓨터 간의 통신은 HTTP라는 표준화된 방식이 있다. HTTP는 HyperText Transfer ..