Spring
-
[스프링/Spring] 스프링 싱글톤 멀티스레드 환경에서의 주의사항Spring 2021. 8. 6. 16:13
기본적으로 스프링에서는 오브젝트를 IoC컨테이너를 통해 싱글톤으로 관리한다. 이로 인해 얻는 장점도 많으나, 그에 따른 주의사항도 요구된다. 싱글톤 멀티스레드 환경 주의사항 싱글톤으로 관리되는 오브젝트는 멀티스레드 환경에서 여러 스레드가 동시에 접근해서 사용할 수 있다. 따라서 상태 관리에 주의를 해줘야 되는데, 만약 싱글톤 오브젝트가 상태정보(ex 인스턴스 변수)를 내부에 가지고 있게 되면, 다중 사용자의 요청에 의해 저장할 공간이 하나 뿐인 싱글톤 오브젝트에 서로 값을 덮어 쓰게 되거나, 자신이 입력하거나 저장하지 않은 값을 읽어올 수 있다. 따라서 싱글톤 오브젝트는 인스턴스 필드(변수) 값을 변경하고 유지하는 상태유지 방식으로 만들면 안 된다. 이를 주의하지 않으면 개발자 혼자 테스트하고 사용할 때..
-
[스프링/Spring] @Component, @Controller, @Service, @Repository 차이Spring 2021. 8. 5. 10:52
기본적으로 @Controller, @Service, @Repository 어노테이션들은 내부적으로 @Component가 선언되어 있다. 즉, @Controller, @Service, @Repository 어노테이션들은 @Component보다 더 세부적인 관점이라 볼 수 있다. @Component 스프링에서 관리되는 빈(Bean) 객체임을 나타내고 DI를 위한 가장 기본적인 어노테이션이다. @Controller Web MVC에 사용되는 어노테이션이다. (해당 클래스를 MVC 모듈의 컨트롤러로 인식하게 해준다.) @RequestMapping, @GetMapping과 같은 URI 요청 어노테이션은 @Controller가 붙은 클래스에서만 동작한다. @Service @Component와 다른 기능은 없지만 비즈..
-
[스프링/Spring] @Bean, @Component 차이 + @ConfigurationSpring 2021. 8. 3. 14:55
@Bean 개발자가 직접 제어가 불가능한 외부 라이브러리를 사용할 때 사용한다. @Configuraion을 선언한 class내부에서 사용한다. 메서드 단위로 지정할 수 있다. (그렇지 않을 시 컴파일 에러를 발생시킨다.) 즉, 개발자가 작성한 메서드를 통해 반환되는 객체를 Bean으로 만든다. @Component 개발자가 직접 작성한 class를 Bean으로 등록 할 수 있게 만들어 준다. class 단위로 지정할 수 있다. (그렇지 않을 시 컴파일 에러를 발생시킨다.) @Controller, @Service, @Repository... 내부에 @Component가 정의되어 있다. 즉, 개발자가 작성한 class를 Bean으로 만든다. @Configuration 스프링이 Bean 팩토리를 위한 오브젝트 ..
-
[스프링/Spring] Spring Boot Thymeleaf 문법 !Spring 2021. 3. 21. 16:25
처음으로 타임리프를 사용해보면서 자주쓴 문법 정리 th:text : 서버에서 넘어온 test란 데이터의 값을 읽어 해당 태그에 삽입해준다. 결과 : something th:if, th:unless : if else문의 기능과 같다. 다만 두 구문의 조건식은 같아야 한다. 123 456 결과 : 만약 test가 null이 아니라면 화면상에 123을 포함하고 있는 div만 렌더링 된다. 123 th:foreach : for문의 기능과 같다. 결과 : 서버에서 받은 serverArray를 someArray란 이름으로 반복하며 템플릿을 만들어준다. someThing someThing