[Spring / 스프링 부트 핵심 가이드] 제어의 역전(IoC, DI, AOP)
·
[ Computer Science ]/프로그래밍 이론
스프링 프레임워크(Spring Framework) 스프링 프레임워크(이하 스프링)는 Java에서 가장 많이 사용하는 프레임워크다. 스프링은 Java 언어로 엔터프라이즈급 개발을 편리하게 만들어주는 '오픈소스 경량급 애플리케이션 프레임워크'라고 불리고 있다. 여기서 엔터프라이즈급 개발은 기업환경을 대상으로 한 대규모 데이터를 처리할 수 있는 환경을 말한다. 즉, Java 언어를 이용한 대규모의 프로젝트를 보다 쉽게 만들 수 있도록 도와준다는 것이다. 스프링의 핵심 가치는 아래와 같다. "애플리케이션 개발에 필요한 기반을 제공해서 개발자가 비즈니스 로직 구현에만 집중할 수 있도록 하는 것" 여러 가지 기술을 이용하여 복잡한 요소들을 스프링 프레임워크에 위임하고, 개발자는 비즈니스 로직 개발에만 집중할 수 있..
[Spring] application.properties와 application.yml의차이
·
Spring
.properties / .yml application.properties와 application.yml 두 가지 방식은 사실 똑같다. (크게 다르지 않다.) 두가지 방식 모두 프로젝트의 설정을 담당하는 파일이다. IntelliJ에서 기본적으로 Spring Initializr를 통해 Spring Boot 프로젝트를 생성하면 application.properties가 생성되지만, application.yml도 많이 사용되는 것 같다. 차이점 두가지 모두 똑같은 설정 정보를 입력하지만, 구조가 다르다. properties는 key=value의 형태로 이루어져 있고, yml은 계층 구조로 이루어져 있다. 아래 예제로 간단하게 확인해 보자. yml group1: group2: group3: message1: h..
[H2 DB] 인메모리 방식 연결 방법 (미설치)
·
Database
1. appliication.yml 파일에 아래와 같이 데이터소스 설정 spring: datasource: url: jdbc:h2:mem:test username: sa password: driverClassName: org.h2.Driver (application.properties) spring.datasource.driver-class-name=org.h2.Driver spring.datasource.url=jdbc:h2:mem:test spring.datasource.username=sa spring.datasource.password= 2. 서버 구동 후 로그 확인 /h2-console url로 db 접근 가능 3. localhost:8080/h2-console 접근 설정한 url로 JDBC U..
[Spring] DB 연동 (MariaDB), MyBatis 사용
·
Spring
Spring DB 연동 Spring에서 DB 연결하는 방법을 간단히 알아보자. 1. gradle 설정 build.gradle에 아래와 같이 의존성을 추가해 주자. dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' //JDBC implementation 'org.springframework.boot:spring-boot-starter-jdbc' //mariadb runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' } 2. DB datasource 설정 Spring project의 application.properties에서 아래와 같이 datasource 정보를 설정해 주자..
벡엔드 신입 개발자가 자료구조, 알고리즘 공부를 해야하는 이유
·
[ 기타 ]/끄적끄적...
코딩테스트 공포증 난 코딩테스트가 두려웠다. 그래도 해야 된다니까 조금씩 공부를 하긴 했었다. 그러다 처음 접하는 문제를 풀어보고 좌절했다. 아마 그래프 문제였던 것 같다. 마치 미적분을 처음 접한 학생처럼, 당황스러웠다. 그때까지만 해도 특정 알고리즘이 존재하는지도 몰랐다. 기본적인 배열과 List, Map 같은 기본 자료구조만 사용해서 무작정 문제를 풀다가 DFS, BFS를 처음 만났고, 문제 풀이 방법이 상상도 안 돼서 구글링 해서 답안을 찾아봤다. 그런데 답안을 찾아보니 더 답이 없었다. 이런 걸 어떻게 생각해 내지?라고 생각했다. 그리고는 막연히 다른 거 먼저 공부해야지 하고 포기하고 있었다. 지금 생각해 보면 조금 아쉽다. 그때는 어느 정도 많이 쓰이는 알고리즘들이 존재하는지 조차 몰라서 포기..
앞으로의 백엔드 공부 계획 (백엔드 공부 로드맵)
·
[ 기타 ]/끄적끄적...
백엔드 개발자로 취업하기 위해 필요한 기술들 나는 지금 백엔드 개발자가 되기 위해 공부중이다. Java는 대학교에서, Spring은 인프런 강의를 통해 어느정도 배웠었다. 지금은 제로베이스라는 부트캠프의 커리큘럼에 따라 공부중이다. 내가 생각하기에 백엔드 개발자가 되기위해 알아야 하는 기술은 아래와 같다. Java Spring Framework 데이터 접근 기술 (JDBC, MyBatis, JPA) SQL CS 지식 좋은 코드를 짜기 위한 Java 관련 지식 Spring 개념에 대한 지식 코딩테스트를 뚫을 자료구조, 알고리즘을 다루는 실력 이중에 내가 지금 가장 중요하게 생각해야 할 것은 코딩테스트 준비라고 생각한다. 그 이유은 코딩테스트 준비를 하며 여러 알고리즘 문제들을 풀면서 전체적으로 Java를 ..
어떤 백엔드 개발자가 되고싶은가?
·
[ 기타 ]/끄적끄적...
클린코드 요즈음 클린코드 책을 읽고 있어서인지는 몰라도 나는 유지보수가 쉽고 가독성 좋은 코드를 짜는 것에 관심이 많은 것 같다. 이러한 고민은 처음으로 작은 프로젝트(엄청 작은(계산기만들기같은..))를 만들어볼 때부터 있었던 것 같다. (진짜 왕왕초보 때) 이렇게 코드를 짜니까 뭐가 뭔지 하나도 모르겠다. 이게 맞나? ㅋㅋㅋ 이 부분은 메서드로 빼는 게 나은가? 이 부분은 클래스를 만들어서 쓰는 게 나은가? 메서드이름을 어떻게 지어야 할까? if( isTrue == false )가 나은가 if(! isTrue)가 나은가? ... 이런 고민들을 하고, 내가 스스로 생각해서 이게 낫겠다 싶은 방법으로 하기도 하고, chat GPT에 물어보기도 하다가 결국 클린코드 책을 사서 읽는 중이다. 리팩터링 나름 초..
FrontEnd와 BackEnd의 차이 / 내가 백엔드를 선택한 이유
·
[ 기타 ]/끄적끄적...
개발자란? 개발자는 보통 소프트웨어 개발자(Software Developer)를 말한다. 아직 현업에서 일해보지 않았기 때문에 지금 당장은 어디서 주워들은 지식으로 아래 5개의 분야만 떠오른다. 프런트엔드 : 서비스에서 눈에 보이는 화면을 만드는 분야 백엔드 : 서비스에서 눈에 보이지 않는 부분에서 여러 가지 정보를 처리하는 분야 (아래 3개는 사실 잘 모른다.) Data Engineer : 데이터를 다루거나, 빅데이터를 이용해 머신러닝, 딥러닝, 인공지능 등을 다루는 분야 임베디드 : 하드웨어와 가까운 운영체제나, 실제 사용하는 기계(전자레인지) 등을 동작하게 하는 분야..? 보안 : 정보 보호의 관점에서 정보유출을 막는 방법을 연구하여 코드를 짜는 분야..? 이외에도 수많은 분야들이 있는 것으로 알고..