FrameWorks/Spring & Boot27 [Spring Annotation] @DependsOn @DependsOnPOJO가 늘어나면 Bean생성 과정 중 다른 Bean의 생성이 우선시 되어야 하는 경우가 발생할 수 있습니다.예를 들어 A, B라는 Bean의 로직은 C라는 Bean에서 필요하게 될 때 발생합니다.아직 Spring이 A, B를 초기화하지 않아 C라는 Bean이 먼저 초기화되면서 에러가 발생하게 될 것입니다.이 때 Bean의 초기화 순서를 보장해주는 Annotation이 @DependsOn입니다.@DependsOn("${BeanName}")으로 선언하고 해당 Class의 Bean은 반드시 ${BeanName}의 빈보다 나중에 생성됩니다.${BeanName}은 콤마(,)를 기준으로 여러개를 선언할 수 있습니다.@DependsOn({"Bean1", "Bean2", "Bean3",...})아.. FrameWorks/Spring & Boot 2025. 1. 12. [Spring Annotation] @Primary, @Required @PrimarySpring에서 @Primary를 붙여 자동연결시 우선순위를 부여해줄 수 있습니다.만약 PrefixGenerator 인터페이스 구현체인 DataPrefixGenerator 클래스에 @Primary를 붙여놓았으면 PrefixGenerator 형의 인스턴스가 다수 존재하더라도 @Primary를 붙인 Class의 Bean이 우선적으로 연결됩니다.@Componet@Primarypublic class DataPrefixGenerator implements PrefixGenerator { ...}@Required@Required는 Spring에 내장된 RequiredAnnotationBeanPostProcessor가 지원하는 Annotation입니다.RequiredAnnotationBeanPos.. FrameWorks/Spring & Boot 2025. 1. 12. [Spring Annotation] @Autowired, @Qualifier, @Import, @Resource, @Inject @Autowired@Autowired는 Bean Factory에 저장되어 있는 인스턴스를 전부 검색한 후에 자동으로 연결시켜주는 기능을 합니다.위에 @Component를 설명하면서 작성한 Class를 우리는 @Component를 선언해 줌으로써 Bean 생성을 하였습니다.그렇게 생성된 인스턴스를 연결시켜준다고 생각하면 됩니다. 맞는 비유일지는 모르겠으나, 바인딩이 된다고 생각하면 좀 더 이해가 쉬울 것입니다.위에서 우리가 선언한 SequenceDaoImplClass를 예로 들어 보겠습니다.@Componentpublic class SequenceService { @Autowired private SequenceDao sequenceDao; ...} @Autowired의 속성값으로 requi.. FrameWorks/Spring & Boot 2025. 1. 12. [Spring Annotation] @Configuration, @Bean, @Component @Configuration, @Bean@Configuration을 선언하면 해당 Class는 구성 Class임을 알리게 된느데요.Spring은 @Configuration이 달린 구성 Class에서 @Bean을 붙인 자바 메서드를 찾게 되는데, 해당 메서드와 동일한 이름의 Bean이 생성됩니다.이름을 따로 명시하려면 @Bean(name="${name}")을 붙이는 방법도 존재하니 특정 이름으로 생성하고 싶을 때에는 이 방법을 사용하면 됩니다.@Configurationpublic class SequenceGeneratorConfiguration { @Bean public SequenceGenerator sequenceGenerator() { SequenceGenerator seqgen.. FrameWorks/Spring & Boot 2025. 1. 12. [Spring Core] 필수 개념 POJO(Plain Old Java Object)??POJO란 직역하자면 순수한 오래된 자바 객체입니다.Java로 생성하는 순수한 객체를 의미합니다.객체지향 원리에 충실하면서 환경 및 기술에 종속되지 않고, 필요에 따라 재활용할 수 있다는 것이 가장 큰 특징입니다.Spring Container를 사용하는 이유우리는 객체를 생성하기 위해 new라는 연산자를 사용해야 합니다.객체간의 참조가 많으면 많을수록 의존성이 높아지게 됩니다.이는 낮은 결합도와 높은 캡슐화를 지향하는 객체지향 프로그래밍의 핵심과는 반대의 방식입니다.따라서, 객체간의 의존성을 낮추어 결합도는 낮추고, 높은 캡슐화를 위해 사용해야 합니다.IoC ContainerSpring에서 객체를 생성하고 관리하고 책임지고 의존성을 관리해주는 Conta.. FrameWorks/Spring & Boot 2024. 9. 25. Spring Boot(Maven)에 Mybatis + postgreSQL 접목시키기!! 안녕하세요. 이번 게시글은 데이터 관리를 위해 Spring Boot에 Mybatis와 PostgreSQL을 접목 시키는 방법을 설명하겠습니다. 우선 환경은 다음과 같습니다. 구분 언어 / 라이브러리 언어 Java17 프레임워크 Spring Boot 3.2.1 Persistence Framework Mybatis 3.0.3 자동화 빌드 툴 Maven 보통 Spring Boot의 데이터 흐름은 아래와 같습니다. Spring Boot와 Spring의 용어 차이는 아래와 같으니 참고하시기 바랍니다. (자주보는 그림이 될수도 있습니다. 중요한 부분이기에 다른글에서도 자주 등장할 예정입니다.) 설정 파일 구성 pom.xml 우선 pom.xml에 우리가 필요로하는 dependency를 추가해 주어야 합니다. org... FrameWorks/Spring & Boot 2024. 1. 13. URL의 특정 패턴을 파악하고 가로채는 HandlerInterceptor, HandlerInterceptorAdapter HandlerInterceptor, HandlerInterceptorAdapter 애노테이션의 선언 없이 사용 하는 Spring에서의 Class(HandlerInterceptorAdapter) 와 Interface(HandlerInterceptor) 이다. 당연스럽게도 Class이므로 상속받아 사용하고, Interface이므로 구현해 사용해야 한다. 차이점 이라면 PreHandle, PostHandle, afterCompletion 세가지 메서드를 모두 구현해 주여야하는 Interface와 선택해서 Override할 수 있는 Class의 차이라고 할 수 있다. preHandle preHandle은 Controller가 실행 되기 이전에 url을 식별 or 매순간에 중간에 캐치하여 작성한 로직을 우선적으로.. FrameWorks/Spring & Boot 2024. 1. 13. [SpringBoot] RequestContextHolder RequestContextHolder는 Spring 컨텍스트에서 HttpServletRequest에 직접 접근 할 수 있도록 도와주는 역할을 한다. 활용 시 HttpServletRequest를 사용하기 위해 이를 메소드 파라미터로 연이어 넘겨받을 필요가 없다. 동작원리ThreadLocal을 사용하여 servlet이 호출되면 key, value(thread, HttpServletRequest)를 보관호출된 servlet과 동일한 thred내에서는 어느 곳에서든 같은 HttpServletRequest를 꺼낼 수 있음servlet이 종료될 때 해당 thread를 key로 갖는 쌍을 제거 HttpServletRequest를 사용하는 경우Parameter로 데이터를 받아 주어야 함@RestController @R.. FrameWorks/Spring & Boot 2023. 4. 13. [Spring] Model과 ModelMap의 차이점 공통점 기본적으로 기능적인건 같기때문에 무엇을 쓰던지 상관은 없다. 차이점 Model 인터페이스로 구현되어 있다. ModelMap 클래스로 구현되어 있다. LinkedHashMap을 상속 받는다. Linked~~의 속성상 추가시 입력 순서가 정해진다. 필자는 본인이 공부한 내용을 메모용도로 사용한 것이며 잘못된 정보로 되어있으면 수정할테니 댓글 달아주시면 감사하겠습니다. ㅠㅠ FrameWorks/Spring & Boot 2023. 4. 10. Spring Boot에서 handlerInterceptor 설정 HanlderInterceptor란?? Spring Boot에서 지원하는 FrameWork로 해당 조건에 만족하는 상황에서 응답시점을 가로채서 전/후 처리를 하는 역할 Interceptor생성 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.HandlerInterceptor; import or.. FrameWorks/Spring & Boot 2023. 2. 8. Spring Boot에서 email인증하기 ViewPage 비밀번호 찾기 form 해당 input에 적절하게 입력하지 않을 시 css로 error효과를 넣기위해 div 삽입 1 2 3 4 5 6 7 8 9 10 11 12 13 이름 이름을 입력하세요 이메일 유효하지 않은 이메일주소 입니다 Colored by Color Scripter cs 이메일 인증번호 확인 form 1 2 3 4 5 6 7 8 9 인증번호 Colored by Color Scripter cs 비밀번호 재설정 form 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 새비밀번호 Invalid password 새비밀번호 확인 Invalid password Colored by Color Scripter cs 인증번호 발송 Controller 1 2 3 .. FrameWorks/Spring & Boot 2023. 2. 7. Spring Boot에서 외부 파일 경로 사용하기!! FrameWorks/Spring & Boot 2023. 2. 2. 이전 1 2 3 다음 💲 추천 글 728x90 반응형