기존에 잘 사용하던 EnableGlobalMethodSecurity 가 Spring Boot 3.x, Spring security 6.x 로 버전을 올리면서 Deprecated가 되었습니다... 이에 따라 값들을 수정해주어야 하는데, 아직 전부 파악하지는 않았고, 어떻게 해결해야하는지 까지는 파악했습니다. 우선, @EnabelGlobalMethodSecurity 는 @EnableMethodSecurity 를 쓰라고 해당 페이지에서 알려줬습니다. https://docs.spring.io/spring-security/site/docs/current/api/deprecated-list.html 또한, 지금까지 옵션으로 설정해주던 prePostEnabled의 값이 ture가 defalut 값이 되면서 설정을 안..
Back-end
해당 글은 제가 인턴 업무 중 이메일 서비스를 구현할 때 만났던 문제와 구현했던 방식에 대해서 기술하려고합니다. 많은 문제들을 해결해 나가며 결국 이메일이 전송되었을 때에 그 쾌감은 잊지 못합니다..ㅠ 많은 블로그에서 이메일 서비스 구현에 대한 블로깅을 해놓았지만, 제가 원하는 기능은 찾아보기가 어려워 애를 많이 먹었습니다. 이 글에서는 정말 Class 하나하나 곱씹어 가며 정리한 글이기 때문에 만약에 코드만 필요하시다면 맨 밑 으로 가시면 제가 구현한 Code 만 올려드리겠습니다. (보시면 더 좋고...😅) Gmail 설정 우선 Gmail 에 설정을 해놓아야 이메일 전송이 가능합니다. 여기서는 이메일 전송에 대한 부분을 집중적으로 작성하려고 하기 때문에 설정 관련 부분은 제가 참고한 블로그를 올려드리겠..
Generic의 사전적인 의미는 "포괄적인, 총칭의, 회사 이름이 붙지 않은, 일반 명칭으로 판매되는" 즉, 딱 하나를 정하지 않고 범용적이고 포괄적이라는 의미입니다. Java 에서 Generic은? Data type을 특정한 type 하나로 정하지 않고 사용할 때마다 변경 할 수 있게 범용적이고 포괄적으로 지정한다는 의미입니다. "그렇다면 왜 사용해야 할까?" 제일 큰 이유는 Object 클래스의 한계 때문입니다. List list = new ArrayList(); list.add("hello"); String str = list.get(0); System.out.println(list); 위의 코드는 정상으로 작동 할까요? 아닙니다, 3번째 줄에서 오류가 발생합니다. list의 데이터 타입은 Obje..
Spring은 공통적으로 여러 작업을 처리함으로써 중복된 코드를 제거할 수 있도록 많은 기능을 지원하고 있습니다. 그 중에서 필터(Filter) 와 인터셉터(interceptor)의 차이에 대해 알아보려고 합니다. 필터(Filter) 필터란 J2EE 표순 스펙 기능으로 디스패처 서블릿(Dispatcher Servlet)에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공합니다. ❓여기서 J2EE란? 자바 기술로 기업환경의 애플리케이션을 만드는데 필요한 스펙 집합입니다. ❓여기서 디스패처 서블릿(Dispatcher Servlet)이란? HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아서 적합한 컨트롤러에게 위임해주는 프론트 컨트롤러입니다. 장점 w..
서블릿이란 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술 입니다. 쉽게 말해서 자바를 사용하여 웹을 만들기 위해 필요한 기술 입니다. 클라이언트가 필요한 요청을 했을때, 그 요청에 대하여 응답을 하는것을 자바로 응답하는 것입니다. Servlet의 장단점은 무엇이 있을까요? 장점 복잡한 프로그램 로직 구현에 적합합니다. Java Thread 지원이 됩니다. 안정적인 웹 서비스 구축이 가능해집니다. 단점 HTML 문서 디자인이 바뀔 때마다 .class 파일을 수정/컴파일/설치를 해야합니다. 웹 서버를 재 가동하는 일이 되풀이 됩니다. 따라서 속도가 느려집니다. Servlet Container(서블릿 컨테이너) 서블릿이 Servlet 클래스..
❓개념 자바 가상머신 -> JVM(Java Virtual Machine)은 자바 프로그램의 실행환경을 만들어주는 소프트웨어입니다 ❓왜 사용하는지 자바가상머신을 사용하는 가장 큰 이유는 하나의 바이트코드 즉 (.class)파일로 모든 플랫폼에서 작동이 가능해서 사용합니다 아래의 경우는 c언어의 경우입니다. 컴파일 플랫폼과 타겟플랫폼이 다르면 프로그램 실행이 불가능하다는 단점이 있습니다. 하지만, 자바의 경우 독립적인 자바 컴파일러를 사용하여 타겟플랫폼이 원하는 컴파일 플랫폼으로 가상머신을 생성해줍니다. 덧붙이자면, “ Java는 플랫폼에 종속적이지 않지만, Jvm은 플랫폼에 종속적” 라고 표현이 가능 할 것 같습니다. ❓자바 프로그램의 실행과정 우리가 자바로 .java 코드를 작성하고 터미널에 있는 자바 ..
Java에서 문자열을 다루는 대표적인 클래스로는 String, StringBuffer, Stringbuilder가 있습니다. 연산이 많지 않을 때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 확률은 거의 없습니다만, 연산횟수가 많아지거나 수정/삭제가 많아지고 멀티쓰레드, Race condition 등의 상황이 자주 발생한다면 각 클래스의 특징을 이해하고 사용해야 합니다. String String과 나머지의 가장 큰 차이점은 String은 불변(immutable)의 속성을 갖고 있다는 점입니다. 예를들어 String str = "hello"; == hello str = str + " world"; == hello world 이런 코드가 있다면 그냥 보기에는 hello 라는 문자열에 world가 ..
Spring의 종류 스프링부트(Spring Boot) 스프링은 개발 환경 설정이 꽤나 어려운 편에 속합니다. 그래서 스프링의 개발 환경의 어려운점을 보완하고자 만든것이 "SpringBoot"입니다. 환경 설정을 최소화 하고 개발자가 비즈니스 로직에 집중할 수 있도록 도와줍니다. 스프링(Spring Framework) 스프링의 핵심이 되는 DI(의존성 주입), AOP(관점지향 프로그래밍) 기능들을 제공합니다. 웹 애플리케이션을 개발할 때는 스프링 MVC를 사용하는 등 여러가지 기능이 있습니다. 스프링 데이터(Spring Data) 데이터 연동을 위한 단일 API를 제공합니다. 이 API를 기반으로 JPA, MongoDB, MySQL 이러한 RDBMS나 NoSQL과의 연동을 적은 양의 코드로 처리할 수 있도..