본문 바로가기
반응형

개발/Web21

[Spring] 빈(bean)을 등록하는 방법 1. 컴포넌트 스캔과 자동 의존관계 설정 컴포넌트 스캔의 원리 @Component 어노테이션이 선언되어 있으면 스프링 빈으로 자동 등록 @Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트 스캔 때문! (@Controller 어노테이션을 살펴보면 @Component가 선언된 것을 볼 수 있음) @Service, @Repository도 마찬가지로 @Component가 선언되어 있어 스프링 빈으로 자동 등록 된다. 예시 OrderController.java @Controller public class OrderController { private final OrderService orderService; @Autowired public OrderController(OrderServic.. 2022. 7. 1.
[Web] 동기 방식과 비동기 방식의 차이점 동기(synchronous) 방식 요청과 결과가 동시에 일어나는 방식으로 요청을 보낸 후 응답을 받아야 다음 동작이 진행된다. 요청과 결과가 한 자리에 동시에 나타나는 것으로 사용자가 서버로 요청을 보냈을 경우 요청에 대한 응답을 리턴받기 전까지는 다른 것을 하지 못하고 기다려야 한다. 특정 프로그램을 구동시키는 데 시간이 5분 소요된다고 하면, 이 프로그램이 구동되는 5분동안 컴퓨터는 다른 프로그램을 동작시키지 못하고, 구동되기를 기다려야 한다. 장점 : 설계가 간단하고, 직관적이다. 단점 : 요청에 대한 결과가 반환되기 전까지 대기해야 한다. 비동기(Asynchronous) 방식 요청과 결과가 동시에 일어나지 않는 방식으로 요청과 결과가 동시에 일어나지 않는다. 요청한 곳에 결과가 나타나지 않으며, .. 2022. 5. 4.
[Spring Framework] CORS 적용하기 - @CrossOrigin, <mvc:cors>, Filter CORS란? test2.com:8080사이트와 test.com:18080 사이트는 도메인과 포트가 다르다. 따라서 test.com:18080에서 test2.com:8080사이트로 요청을 보내게 되면 아래와 같은 에러를 만날 수 있다. Access to XMLHttpRequest at 'http://domain1:8080/xxxxx' from origin 'http://test.com:18080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. http://localhost:8080/test/1 를 기준으로 비교해보면 URL 출처 비고 http://local.. 2022. 3. 11.
[Web] Received fatal alert: handshake_failure 에러 이 에러는 서버와 클라이언트간의 TLS 버전이 달라서 발생하는 에러이다. Received fatal alert: handshake_failure 서버는 JDK 1.6이라 TLSv1만 지원을 하고 있다. 따라서 https.protocols을 TLSv1로 지정해야 한다. jdk 버전 Default Other Support 1.6 TLS 1.0 TLS 1.1(111이후 버전), SSL v3.0 1.7 TLS 1.0 TLS 1.1, TLS 1.2, SSL v3.0 1.8 TLS 1.2 TLS 1.0, TLS 1.1, SSL v3.0 ※ JDK 1.6.0_111 이후 TLS1.1 지원, 1.6.0_121 이후 TLS 1.2 지원(단, jsse.enableSNIExtension 등의 옵션 설정은 불가능) 해결 방법.. 2022. 3. 8.
[Web] Restful API란? API (Application Programming Interface) 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 명령을 받을 수 있는 수단 정보를 주고 받는 일종의 형식 정보를 요청한는 지정된 형식이 있어야 함 Restful API 과거의 SOAP라는 복잡한 형식 대체 가장 중요한 특성은 각 요청이 어떤 동작이나 정보를 위한 것인지 그 요청의 모습 자체로 추론이 가능해야 함 URL만 봐도 어떤 요청을 하기 위함인지 파악할 수 있어야 함! - 'https://domain/1, https://domain/hello ' : 무슨 기능인지 명확히 파악하기 어려움 - https://도메인/classes : class 목록을 받아오는 요청이라는 것을 파악할 수 있음 { "result":[ {"idx":1,.. 2022. 2. 21.
[Spring] Bean 등록 방법 : @Bean vs @Component 차이 Spring이 객체를 제어하기 위해서는 객체들이 Bean으로 등록되어 있어야 한다. 기존엔 xml을 통해 bean으로 등록했는데 Spring MVC에서는 @Controller, @Service, @Repository 등의 어노테이션을 통해 Spring Container에 Bean으로 등록할 수 있다. 그리고 Configuration 관련 객체는 @Bean과 @Component 어노테이션을 통해 Bean으로 등록할 수 있다. 여기서 @Bean과 @Component의 차이는 무엇일까? @Bean 직접 컨트롤할 수 없는 외부 라이브러리를 Bean으로 등록하고 싶은 경우에 사용한다. @Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(Re.. 2022. 2. 3.
[Maven] 메이븐 repository에 없는 라이브러리 추가하기 필요한 라이브러리를 build.gradle이나 pom.xml의 dependency에 명시에 주기만 하면 maven repository에서 알아서 가져와준다. 하지만 회사의 내부라이브러리와 같은 maven repository에 없는 라이브러리가 있다면 어떻게 해야할까? 방법1 pom.xml에 먼저 명시했을 경우 maven repository에 해당 라이브러리가 존재하지 않아 에러가 발생한다. 로컬의 maven repository 에 가보면 디렉토리가 생성되어 있다. 여기에 test-1.0.0.jar 파일을 추가해주면 pom.xml의 에러가 사라진다. 방법2 mvn install:install-file -Dfile=D:\test-1.0.0.jar -DgroupId=com.test.ynzu -Dartifact.. 2022. 2. 3.
[Spring] Spring Boot Admin 사용하기 - Log, Login 적용 1. 기본 세팅 1.1 Admin Server maven 혹은 gradle에 spring-boot-admin-starter-server 라이브러리 추가 de.codecentric spring-boot-admin-starter-server 2.6.2 // https://mvnrepository.com/artifact/de.codecentric/spring-boot-admin-starter-server implementation 'de.codecentric:spring-boot-admin-starter-server:2.6.2' @EnableAdminServer 추가 @SpringBootApplication @EnableAdminServer public class AdminApplication { public.. 2022. 1. 25.
728x90
반응형