[ Development ]/[ Back-end ] Spring 기본22 [Spring/Swagger] SpringBoot의 Spring Security 환경에서 Swagger 적용시 로그인 화면 임시 해결 방법 ( 결론부터 말하자면 로그인 화면의 유저 네임과 패스워드를 모를 때 사용하는 방법 ) 1. WebConfig 파일 수정으로 해결할 수 없는 경우와 그 이유 스프링부트에서 Spring Security를 적용한 프로젝트라면 Swagger를 사용할 때 로그인 화면을 만날 가능성이 매우 높다 해결 방법을 검색하면 build.gradle 에 springfox 관련 dependency 코드를 추가하고 WebConfig 라는 자바 Config 클래스를 생성하는 코드가 나온다 검색했을 때 나오는 대부분의 WebConfig 코드는 WebMvcConfigurer를 상속 받는 클래스인데 WebMvcConfigurer 의 WebMvcConfigurerAdapter 는 spring 5 버전부터 지원되지 않기 때문에 해당 코드들.. 2024. 2. 15. [Spring/Swagger] 스프링부트에서 Swagger 사용하기 :: springdoc-openapi-ui 라이브러리 스프링부트에서 Swagger를 사용하는 방법은 여러 가지가 있다 (일단 swagger를 모르는 분들을 위해 간단하게 설명하자면 API Documentation & Design Tools for Teams 이다 API를 확인하고 정리하기 편하게 돕는 툴...!) 1. spring fox를 사용할 수 없는 SpringBoot.3.n.n 이전 프로젝트에서는 spring fox를 이용했었는데 이제 스프링 부트 이니셜라이저에서 2.nn 버전을 제공하지 않고 3.n.n 버전만 제공하게 되면서 spring fox를 사용할 수 없게 되었다 2. SpringBoot 3.n.n 이상 버전에서의 Swagger 도입 방법 = springdoc 검색해보면 대부분의 Swagger 도입 프로젝트 코드는 springfox를 이용하고.. 2024. 2. 15. [Spring 스프링 기본] 의존관계 자동 주입 다양한 의존 관계 주입 방법 중 지금까지 생성자 주입 방식을 사용했으며 수정자 setter를 주입하는 방법, 필드에 바로 주입하는 방법, 일반 메서드를 통해 주입하는 방법, 자동 주입 대상을 옵션으로 처리하는 방법이 있다. 생성자 주입 방식을 선택하는 이유는 프레임 워크에 의존하지 않고 순수 자바 언어의 특징을 살리기 위함이다 생성자 주입을 사용하는 것이 기본적이며 필수 값이 아닌 경우에는 setter 주입 방식을 옵션으로 부여하는 방식을 사용할 수 있다. 생성자 주입과 수정자 주입을 동시에 사용할 수 있으며 생성자 주입 방식을 추천하는 편이다. Lombok 라이브러리를 제공하면 코드를 비교적 간단하게 정리할 수 있으며 final 키워드가 있는 필드들만 모아 생성자를 자동으로 만들어주는 @Required.. 2023. 12. 26. [Spring 스프링 기본] 컴포넌트 스캔 컴포넌트 스캔(Component Scan) 설정 정보(AppConfig.class) 없이 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공 스프링 빈 등록 ->직접 자바 코드로 등록하는 방법, 컴포넌트 스캔과 자동의존관계를 설정하는 @Autowired 사용 방법 @ComponentScan은 탐색 위치에 @Component가 붙은 모든 클래스를 스프링 빈으로 등록 기본적으로 빈 이름은 맨 앞글자를 소문자로 변경해서 사용하고 어노테이션 뒤에 ("문자열")을 사용해 직접 설정할 수도 있음 탐색범위(basePackages) 필요한 위치부터 탐색할 수 있도록 탐색 시작 위치를 지정할 수 있음 basePackages : 탐색 시작 위치 지정, 해당 패키지부터 하위까지 basePackagesClasses : .. 2023. 12. 5. [Spring 스프링 기본] 싱글톤 컨테이너 순수 의존성 주입 컨테이너 - 클라이언트 요청마다 생성하는 문제 - 메모리 낭비 객체 하나만 생성하고 공유하도록 설계하여 해결 = 싱글톤 패턴 싱글톤 패턴 -> 클래스의 인스턴스가 단 하나만 생성되도록 보장하는 디자인 패턴 -> private 접근지정자로 설정 - new 연산자를 활용한 (동적할당) 외부에서의 접근, 객체 인스턴스 추가 생성을 방어함 private 접근지정자로 선언되었으므로 getter 메서드를 통해서만 조회 가능하고 해당 메서드 호출하면 항상 같은 인스턴스를 반환함 싱글톤 패턴이 언제나 좋기만 한가? - 당연히 NO 구현하는 코드가 길어짐 클라이언트가 구체 클래스에 의존하게 되는데 DIP 위반, OCP 위반 내부 속성 변경 및 초기화 難 (어려울 난) Private 접근지정자로 인해 자.. 2023. 11. 28. [Spring 스프링 기본] 스프링 컨테이너와 스프링 빈 1. 스프링 컨테이너 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며 생성된 자바 객체들에게 추가적인 기능을 제공한다. 스프링에서는 자바 객체를 빈이라고 부르기 때문에 스프링 컨테이너는 내부에 존재하는 빈의 생명주기를 관리하며 생성된 빈에게 추가적인 기능을 제공하는 것이다. xml, 어노테이션 기반의 자바 설정 클래스로 만들 수 있으며 스프링 부트가 등장하면서 대부분 사용하지 않게 되었다. 의존성 주입을 통해 애플리케이션의 컴포넌트를 관리할 수 있으며 서로 다른 빈을 연결하여 애플리케이션 빈을 연결하는 역할을 한다. 2. 스프링 컨테이너 구성 인터페이스 스프링 컨테이너는 Beanfactory 와 ApplicationContext 두 종류의 인터페이스로 구현되어 있다. 3. 스프링 컨테이너 생성 과정 .. 2023. 11. 21. 이전 1 2 3 4 다음 728x90