본문 바로가기
728x90

🍃SpringFrameworks/SpringMVC21

[SpringMVC] 주요 @Annotation들 💡 Annotation 이란? Annotation(@)은 사전적 의미로는 주석이지만 자바에서는 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다. 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역할을 합니다. 해당 클래스가 어떤 역할인지 정하기도 하고, Bean을 주입하기도 하며, 자동으로 getter나 setter를 생성하기도 합니다. Annotation을 통하여 코드량이 감소하고 유지보수하기 쉬우며, 생산성이 증가됩니다. 💡 Spring의 주요 Annotation리스트! @Bean @Bean은 개발자가 직접 제어가 불가능한 외부 라이브러리등을 Bean으로 만들려할 때 사용 되는 Annotation이다. @Configuration public class Application.. 2023. 8. 19.
[SpringMVC] WebListener & HttpSessionListener WebListener @WebListener annotation을 사용하면 해당 클래스는 Listener가 된다. Listener : 특정 이벤트가 발생하기를 기다리다 이벤트 발생 시 실행되는 컴포넌트를 뜻한다. 클래스를 Listener로 등록하게 되면 서버가 종료될 때 까지 백그라운드 상태에서 동작하는 데몬(deamon)이 되기 때문에 간단한 값을 공유할 수 있다. 추가로 ServletContextListener인터페이스를 상속받으면 서버가 실행/종료 될 때 특정 동작을 수행할 수 있다. HttpSessionLIstener HttpSessionListener인터페이스를 상속받으면 sessionCreated()와 sessionDestroyed() 메서드를 Override할 수 있다. sessionCrea.. 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.
[SpringMVC] Bean & POJO (Plain Old Java Object) 💡 스프링 빈이란? **스프링 컨테이너(IoC)에 의해 관리되는 자바 객체(POJO)**를 빈(Bean)이라고 합니다. 스프링 컨테이너는 스프링 빈의 생명 주기를 관리하며, 생성된 스프링 빈들에게 추가적인 기능을 제공하는 역할을 한다. IoC와 DI의 원리가 스프링 컨테이너에 적용된다. 💡 Component 컴포넌트 스캔은 @Component를 명시하여 빈을 추가하는 방법이다. 클래스 위에 @Component를 붙이면 스프링이 알아서 스프링 컨테이너에 빈을 등록한다. 컴포넌트 스캔의 대상 @Component 외에 @Controller, @Service, @Repository, @Configuration는 @Component의 상속을 받고 있으므로 모두 컴포넌트 스캔의 대상이다. @Controller 스프.. 2023. 8. 19.
[SpringMVC] DAO & DTO & VO 💡 1. DAO(Data Access Object) DAO는 실제로 DB의 data에 접근하기 위한 객체입니다. 실제로 DB에 접근하여 data를 삽입, 삭제, 조회, 수정 등 CRUD 기능을 수행합니다. Service와 DB를 연결하는 고리 역할을 합니다. Repository package가 바로 DAO입니다. @Repository @RequiredArgsConstructor public class MemberRepository { private final EntityManager em; public void save(Member member) { em.persist(member); } public Member findOne(Long id) { return em.find(Member.class, id).. 2023. 8. 19.
728x90