본문 바로가기
  • 개발 로그를 기록하며,
    복습하고 깊이를 더해갑니다.
728x90

🍃SpringFramework/SpringMVC23

[SpringMVC] 비동기 처리 (with. Async) WAS에서 비동기로 처리하는 방법 Spring은 주로 웹 개발에 사용되기 때문에 비동기 처리가 필요한 경우는 보통 UX개선으로 화면의 블로킹 현상을 방지하기 위해 Client(js)에서 Axios등을 사용하여 비동기로 HTTP 요청을 보내는 방식으로 처리한다. 하지만 아래와 같이 서버(WAS)에서 비동기 처리가 필요한 경우도 있다. 무거운 연산 또는 I/O 작업 처리데이터베이스 쿼리, 대용량 파일 처리, 외부 API 호출 등으로 인해 응답 시간이 길고, 클라이언트가 기다리기 어려운 경우서버에서 비동기로 처리해 자원 낭비와 블로킹을 줄임서버 자원 제한 및 동시성 처리 필요제한된 쓰레드 풀에서 다수 요청을 효율적으로 처리해야 할 때서버 쓰레드가 블로킹 되면 전체 처리량이 떨어지므로 비동기 처리로 극복실시간 .. 2025. 6. 29.
[SpringMVC] @Value로 Static 변수에 값 주입할 수 있을까? Spring에서 @Value 어노테이션은 application.properties와 같이 프로퍼티에 정의된 값을 주입하는데 사용된다.@Value 어노테이션 사용 방법.propertiesapp.name=MyApplicationapp.version=1.0.0 .java@Componentpublic class AppConfig { @Value("${app.name:default}") private String appName; @Value("${app.version:0}") private String appVersion;}보통 이렇게 @Value 형식에 맞춰 properties 값을 주입하여 주면 간단히 사용할 수 있지만 한 가지 주의할 점이 있다.@Value로 값을 주입할 변수가 sta.. 2024. 12. 10.
[SpringMVC] 주요 @Annotation들 💡 Annotation 이란? Annotation(@)은 사전적 의미로는 주석이지만 자바에서는 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다. 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역할을 합니다. 해당 클래스가 어떤 역할인지 정하기도 하고, Bean을 주입하기도 하며, 자동으로 getter나 setter를 생성하기도 합니다. Annotation을 통하여 코드량이 감소하고 유지보수하기 쉬우며, 생산성이 증가됩니다. 💡 Spring의 주요 Annotation리스트! @Bean @Bean은 개발자가 직접 제어가 불가능한 외부 라이브러리등을 Bean으로 만들려할 때 사용 되는 Annotation이다. @Configuration public class Application.. 2023. 8. 19.
[SpringMVC] WebListener를 활용한 중복 로그인 방지 Listener : 특정 이벤트가 발생하기를 기다리다 이벤트 발생 시 실행되는 컴포넌트.  WebListener@Weblistener는 ServletListener를 정의하는데 사용된다. ServletListener란? 웹 애플리케이션의 특정 이벤트(시작 세션 생성/소멸 등)를 감지하고 이에 반응하는 컴포넌트이다.클래스를 Listener로 등록하게 되면 서버가 종료될 때 까지 백그라운드 상태에서 동작하는 데몬(deamon)이 되기 때문에 간단한 값을 공유할 수 있다.추가로 ServletContextListener인터페이스를 상속받으면 서버가 실행/종료 될 때 특정 동작을 수행할 수 있다. 사용 예시:import javax.servlet.ServletContextEvent;import javax.servl.. 2023. 8. 19.
[SpringMVC] REST API & Ajax 💡 REST 와 Ajax 웹을 통해서 작업할 때 REST 방식이 가장 많이 쓰이는 형태는 Ajax와 같이 결합된 형태이다. Ajax는 Asynchronous JavaScript and XML 의 약자로 비동기 방식으로 데이터를 주고 받는 방식을 말한다. 동기 방식은 순차적인 일을 실행하는데 적합하다. (어떤 업무가 끝나길 기다린 후 끝나면 다른 업무가 시작되는 형태) 비동기 방식은 처리한 결과를 기다리지 않고, 흐름이 지속된다. 비동기 방식의 특징은 처리된 일의 결과를 통보받은 형태로 처리된다는 점이다. REST방식과 Ajax를 이용하면 화면의 전환이나 깜빡임 없이 주어진 기능을 수행할 수 있다. 쉽게 말하면 html의 빈 껍데기를 클라이언트에게 보내준다. 어떤 이벤트가 발생하면 jQuery의 Ajax가.. 2023. 8. 19.
[SpringMVC] MyBatis 💡 MyBatis 란? 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크이다. 💡 특징 복잡한 쿼리나 다이나믹한 쿼리에 강하다 - 반대로 비슷한 쿼리는 남발하게 되는 단점이 있다. 프로그램 코드와 SQL 쿼리의 분리로 코드의 간결성 및 유지보수성 향상 resultType, resultClass등 Vo를 사용하지 않고 조회결과를 사용자 정의 DTO, MAP 등으로 맵핑하여 사용 할 수 있다. 빠른 개발이 가능하여 생산성이 향상된다. 💡 SpringMVC > MyBatis 연동 1. Mybatis 라이브러리 추가 (pom.xml) - version확인! 2. SQL SessionFactory 설정 (root-context.xml) SQL Sessi.. 2023. 8. 19.
[SpringMVC] TDD 💡 TDD (Test Driven Development) TDD란 ‘테스트 주도 개발’을 의미한다. 테스트 주도 개발(TDD)은 설계 이후 코드 개발 및 테스트케이스를 작성하는 기존의 개발 프로세스[그림1]와 다르게 테스트케이스를 작성 한 후 실제 코드를 개발하여 리펙토링하는 절차(그림2)를 따른다. 이러한 이유로 TDD를 Test First Development라고도 한다. @Test public void 사용자를_생성한다() throws Exception { String testName = "test_name"; given(userService.save(any(User.class))).willReturn(User.builder().name(testName).type(UserType.NORMAL).bu.. 2023. 8. 19.
[SpringMVC] AOP (Aspect Oriented Programming) 💡 AOP란? Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예시 > **class A {** method a() { AAAA method a가 하는 일들 BBBB } method b() { AAAA method b가 하는 일들 BBBB } **}** **class B {** method c() { AAAA method c가 하는 일들 BBBB } **}** AOP는 여러군데서 사용되는 중복되는 코드를 떼어내서 분리하고, method a, .. 2023. 8. 19.
[SpringMVC] Transaction 💡 트랜잭션 이란? 데이터를 처리하는데 오류나 다양한 상황에 대하여 안정성을 확보하고 성공한 경우에만 반영을 해주는 것을 트랜잭션이라고 합니다. 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미합니다. 즉, 병행 제어 시 처리되는 작업의 논리적 단위입니다. Transaction은 하나의 흐름으로 하나의 실행이 성공하거나 실패하면 모든 연산들을 동일하게 처리합니다 💡 트랜잭션의 성질 ▶ 원자성(Atomicity) 한 트랜잭션 내에서 실행한 작업들은 하나로 간주한다. 즉, 모두 성공 또는 모두 실패. ▶ 일관성(Consistency) 트랜잭션은 일관성 있는 데이타베이스 상태를 유지한다. (data integrity 만족 등.) ▶ 독립성(Isolation) 동시에 실행되는 트랜잭.. 2023. 8. 19.
728x90