기존에 잘 사용하던 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/spring
Spring의 종류 스프링부트(Spring Boot) 스프링은 개발 환경 설정이 꽤나 어려운 편에 속합니다. 그래서 스프링의 개발 환경의 어려운점을 보완하고자 만든것이 "SpringBoot"입니다. 환경 설정을 최소화 하고 개발자가 비즈니스 로직에 집중할 수 있도록 도와줍니다. 스프링(Spring Framework) 스프링의 핵심이 되는 DI(의존성 주입), AOP(관점지향 프로그래밍) 기능들을 제공합니다. 웹 애플리케이션을 개발할 때는 스프링 MVC를 사용하는 등 여러가지 기능이 있습니다. 스프링 데이터(Spring Data) 데이터 연동을 위한 단일 API를 제공합니다. 이 API를 기반으로 JPA, MongoDB, MySQL 이러한 RDBMS나 NoSQL과의 연동을 적은 양의 코드로 처리할 수 있도..
DI(Dependency Injection) DI(Dependency Injection) 이란 스프링이 다른 프레임워크와 차별화 되어 제공하는 의존 관계 주입 기능이다. 객체를 직접 생성해주는 것이 아닌 외부에서 생성을 한 후에 객체를 주입 시켜주는 방식이다. DI(의존성 주입)를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다. 위의 그림에서 보여주는 [방법1]은 A객체가 B와 C 객체를 new 생성자를 통하여 직접 생성하는 방법이고 [방법2]는 외부에서 생성한 객체를 A객체에 주입하는 방식이다 위의 [방법2]가 의존성 주입의 예시이다. A 객체 에서 B,C 객체 를 사용(의존) 할때 A객체 에서 직접 생성하는 것이 아니라 외부(IOC컨테이너 에서 생성된 B,C 객체 를 조립(주입) 시켜 sett..
Spring Bean 이란 Spring 에서 POJO(plain, old java object)를 "Beans"라고 부른다. Beans는 애플리케이션의 핵심을 이루는 객체이며, Spring IoC(Inversion of Control) 컨테이너에 의해 인스턴스화, 관리, 생성된다. Beans는 우리가 컨테이너에 공급하는 설정 메타 데이터(XML 파일)에 의해 생성된다. 컨테이너는 이 메타 데이터를 통해 Bean의 생성, Bean Life Cycle, Bean Dependency(종속성) 등을 알 수 있다. 애플리케이션의 객체가 지정되면, 해당 객체는 getBean() 메서드를 통해 가져올 수 있다. Spring Bean 정의 일반적으로 XML 파일에 정의한다. 🔻주요속성 class(필수) : 정규화된 자..
Lombok 정리 개념 Java에서 자주 반복되는 코드(Getter, Setter, 생성자 등등)들을 어노테이션을 통해 자동으로 생성해주는 라이브러리 Lombok 어노테이션은 한마디로 말해서, 지저분해지는 코드들은 전부 간편하게 자동 생성해준다. 기존에 썼던 것들은 간편화 해주는 것이기 때문에 lombok을 사용해도 어떻게 사용되는지 알아야 한다. @Getter, @Setter ⚠️ 사용하기 전 코드 ---------------------------------------------------- public class Post { private String title; private String content; private String author; public void setTitle(String ti..
JPA(Java Persistence API)는 무엇인지 알아보자. JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 다시말하면, 실제적으로 구현이 된게 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. (JPA를 구현하는 대표적인 오픈소스는 Hibernate이다.) 우선 JPA를 알기전에 ORM에 대해서 개념을 잡고 가야한다. ORM 우리가 일반적으로 알고 있는 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑한다는 뜻이다. 기술적으로는 애플리케이션의 객체를 RDB 테이블에 자동으로 영속화 해주는 것이다. (여기서 영속화란, 지속시킨다는 개념이다. 만약 더 알고싶다면 여기를 ..
스프링에서는 인증, 권한 등 보안에 관한 기능을 제공하는 프레임워크인 스프링 시큐리티(Spring Security) 가 있다. 우선 스프링 시큐리티(Spring Security)를 알기 전에 인증과 권한에 대해서 알아보려한다. 📌 인증(Authentication) 인증(Authentication)이란 보호된 리소스에 접근하는 대상, 즉 사용자에게 적절한 접근 권한이 있는지 확인하는 일련의 과정이다. 이 때 보호된 리소스에 접근하는 대상(사용자)을 접근 주체(Principal)이라고 한다. 📌 권한(Authorization) 권한(Authorization)이란 인증절차가 끝난 접근 주체(Principal)가 보호된 리소스에 접근 가능한지를 결정하는 것을 의미한다. 이 때 권한을 부여하는 작업을 인가(Aut..
자바의 프레임워크 spring을 공부하기 이전에 세팅부터 배웠다. 우선 요새 자주 사용하는 java11을 사용하였고 IDE는 IntelliJ 와 Eclipse 둘중 고민하다가 IntelliJ를 사용하기로 했다. 공부는 인프런에 있는 강의를 기반으로 시작할 것이다. 1. 프로젝트 생성 스프링 부트 스타터 사이트를 이용하여 스프링 프로젝트를 생성 https://start.spring.io 기본 메인 클래스를 실행하여 localhost:8080을 사용하여 간단하게 동작 확인 하였다. 간단하게 Gradle에 대해 배웠다. Gradle이란 간단하게 말하자면 오픈소스 빌드 도구라고 배웠다. 자세한 내용은 후에 배우기로 하였다. 예전에는 Tomcat이라는 웹서버를 따로 다운받아야 했지만 스프링부트에서는 tomcat서..