본문 바로가기
728x90
반응형

🍃SpringFramework/SpringMVC22

[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.
[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.
728x90
반응형