Spring Framework
-
Spring bean 정리(1)_bean 등록Spring Framework 2023. 8. 13. 15:43
Spring bean 스프링 ioc 컨테이너에 의해 관리되는 자바 객체 spring ioc container bean의 생명주기를 관리하고 추가적인 기능을 제공한다. 제어 흐름을 외부에서 관리(ioc)해주고 객체들 간의 의존 관계를 스프링 컨테이너가 런타임 과정에서 알아서 만들어 준다. 스프링 빈 등록 방식 component scan @Component를 명시하여 빈을 추가하는 방법 개발자가 직접 컨트롤이 가능한 클래스들의 경우에 사용 클래스 위에 @Component를 붙이면 스프링이 알아서 spring container에 bean을 등록한다. @Component는 @Target(ElementType.TYPE) 설정이 있으므로 Class 혹은 Interface에만 붙일 수 있다. @Controller, ..
-
spring MVC & servlet 정리Spring Framework 2023. 8. 13. 14:31
servlet 동적 데이터를 처리하기 위해 CGI기반 프로그램 CGI의 단점을 보안하여 process가 아닌 thread 사용과 싱글톤 패턴을 사용해 하나의 구현체를 재사용하며 서버에서 많은 리소스 소모를 해결한다. http 요청에 대해 간편하게 사용하도록 API를 제공해준다. (http servlet 상속) init, destory, service를 통해 servlet의 생성주기를 servlet container가 관리한다. 요청 들어온 url에 맞는 servlet이 없으면 컨테이너에서 생성 사용하지 않는 servlet이 있다면 컨테이너에 보관 요청 들어온 url이 컨테이너에 있으면 꺼내서 재사용한다. init() : 클라이언트로부터 최초로 서블릿 요청이 있을 때 실행 service() : 클라이언트로..
-
spring 의존성 주입(DI)Spring Framework 2023. 8. 11. 21:00
DI (의존성 주입) 의존성 : 한 클래스가 변경되면 다른 클래스에 영향을 미치는 것 주입 대상이 여러개일 때, 우선 순위별로 먼저 찾는다. 타입(1순위) @Qualifier(2순위) @Primary(3순위) 이름(4순위) 의존성 주입 패턴 (3가지가 존재한다.) 생성자 주입 1순위 객체의 최초 생성 시점에 의존성을 1회만 주입해준다. final을 사용할 수 있어서 불변을 보장해준다. (추천 방법) final이 있어 NullPointException을 방지할 수 있다. 완전한 생성자라는 가정하에, new 키워드로 객체를 생성해줄 경우 NullPointException이 발생될 수 있지만, 생성자 주입은 방지할 수 있다. 객체 생성시점에 의존성 주입을 하니까 NullPointException을 방지 필드 ..
-
spring 제어의 역전 (Ioc)Spring Framework 2023. 8. 11. 20:53
IOC - 제어의 역전 객체를 외부에서 제어해 변수의 값에 변경이 자유로워졌다. 객체의 제어권을 객체 내부로부터 분리시킨다. 객체지향의 장점을 극대화 값의 변경에 따른 유연한 코드 작성 응집도를 높이고 결합도를 낮추며 변경에 유연한 코드를 작성할 수 있는 구조로 만든다. 예시 public class Ex { SubEx subEx; // 내부에서 직접 관리 (제어권이 객체 내부에 존재) : 변수를 내부에서 직접 초기화 public Ex() { this.subEx = new SubEx(); } // 변수를 받아 간접적으로 관리 (제어의 역전) : 외부로부터 인자를 받아 초기화 : 외부에서 관리한다. SubEx1 subEx1; SubEx2 subEx2; public Ex(SubEx1 subEx1, SubEx2..
-
json 파라미터 xss필터 처리 (request, response)Spring Framework 2023. 8. 11. 20:44
api 개발 중, naver lucy는 json 데이터에 필터 처리가 안되어 추가로 설정해주었습니다. request 받은 json 데이터에 xss 필터 처리 방법 - Controller 진입 전에 필터링 처리를 완료 1. naver lucy 관련 maven, xml파일 추가 - naver lucy github 참고 2. XssConfig.class 파일을 추가 - json 객체를 java 객체로 변환 후 json형식의 데이터를 String으로 전환 후 xss 필터링 처리 public class XssConfig extends JsonDeserializer { @Override public String deserialize(JsonParser p, DeserializationContext ctxt) thr..
-
DAO & DTO & Entity 비교 (POJO, BO 간단한 설명)Spring Framework 2023. 8. 11. 19:14
DAO 실제로 DB에 접근하는 객체이다. sevice class와 DB를 연결한다. DTO 하위 시스템 간의 호출 숫자를 줄여 서비스의 시스템 비용(overhead)을 감소시키기 위해 사용 POJO 형식으로 구현 데이터 교환을 위한 Java Bean 로직을 가지고 있지 않은 순수한 데이터 객체로, Getter/Setter 메소드만 가진다. toEntity 메소드를 통해 Entity로 만든다. Entity 실제 DB의 테이블과 매칭될 클래스 @Entity, @Column, @Id 등을 이용한다. 해당 클래스 안에서 필요한 로직 메소드를 구현할 수 있다. 참고) VO와 DTO 비교 VO는 DTO와 다르게 Read Only 속성을 가진다. VO는 특정한 비즈니스 값을 담는 객체 DTO는 Layer간의 통신 용..
-
Spring에서 CORS ERROR 설정Spring Framework 2023. 8. 11. 19:10
1. 스프링 전역으로 사용할 CORS 설정 @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://localhost:8080", "http://localhost:8081") // 허용할 출처 .allowedMethods("GET", "POST") // 허용할 HTTP method .allowCredentials(true) // 쿠키 인증 요청 허용 .maxAge(3000) // 원하는 시간만큼 pre-flight 리퀘스트를 캐싱 } } 2..
-
스프링 request 관련 메소드Spring Framework 2022. 10. 16. 22:05
request - 정보 요청 - 서버에 정보제공을 요청한다. - 일종의 정보 패킷 - 요청의 URL 끝에 파라미터를 동시에 보내는 경우도 있어 서버에 특정 조건의 정보 요청을 한다. - 요청 방식에는 크게 GET / POST 방식이 있다.(쉽게 생각해서.......GET : 공개 / POST : 비공개) request관련 method // 예제로 사용할 URL = http://localhost:8080/project/list.jsp // #1 requset.getContextPath() // 프로젝트의 path만 가져온다. return // return값 = /project // #2 request.getRequestURI() // 프로젝트 + 파일경로를 가져온다. return // return값 = /..