Spring
-
Spring) AOP 와 프록시 패턴(Proxy Pattern)Spring 2024. 8. 16. 23:01
개요Spring boot 를 하면서 @Transactional 혹은 @Before, @After 같은 어노테이션을 사용해본적이 있을겁니다. 기존에 사용하실때는 그냥 어노테이션을 선언하면 해당 기능이 동작한다. 정도로 이해하고 실제로 어떤방식으로 돌아가는지에 대해서 깊게 생각해본적이 없는경우가 많은데, 이번 기회에 AOP 와 왜 프록시패턴이 항상 같이 따라오는지 작성해보려고 합니다. 우선 AOP 와 프록시패턴에 대해 연결하기전 각각에 대해 먼저 알아보는 과정을 거치겠습니다.AOP(Aspect Oriented Programming)공통적으로 필요한 기능(횡단 관심사)을 모듈화하여, 주요 비즈니스 로직에서 분리하고 코드의 재사용성과 유지보수성을 높이는 프로그래밍 패러다임 AOP(Aspect-Oriented P..
-
Spring) DI(의존성 주입) 그리고 IoC(제어 역전)Spring 2024. 8. 10. 18:27
DI 가 나오기 전 코드DI 를 배우기 전에 DI 가 나오기 전에 여러가지 방법으로 객체를 생성했는지 Java 코드를 통해 알아봅시다. 1. 직접 인스턴스화DI가 등장하기 전에 가장 일반적인 방법은 클래스 내부에서 필요한 객체를 직접 생성하는 것이었습니다. 즉, 클래스가 자신의 의존성을 직접 관리하는 방식입니다. 보통 학교나 학원에서 Java 를 배울때 객체를 배우고 그 객체를 생성하려면 new 를 통해 생성하는것으로 배워왔습니다.public class PetController { private PetService petService = new PetService(); //직접 객체를 생성 public void handleRequest() { petService.doSomethin..
-
Spring Boot: Java에서 Kotlin으로 (2) - TDD,BDD,DDDSpring 2024. 7. 28. 23:53
개요얼마전 코테 대신 과제를 제출하는 회사가 있다는것을 알고 과제에 대해 리서치하기 시작했다.그리고 과제를 할때 항상 반드시 제출하라는것이 바로 테스트코드 였는데 기존에 개발할때는 API 를 개발하고 Postman 으로 Request 보낸뒤 잘 동작하면 끝~ 이라는식으로 개발을 많이 해왔었다.하지만 과제를 찾아보면서 테스트코드가 얼마나 중요한것인지 인지하게 되면서, 주도 개발 방법론에 대해서도 공부했는데, 이번 마이그레이션에도 도입하기전 리서치를 하려고한다. TDD (Test-Driven Development, 테스트 주도 개발)코드를 작성하기 전에 테스트 케이스를 먼저 작성하는 방식소프트웨어 품질을 높이고 코드 결함을 줄이는 것을 목표기본 원칙테스트 작성 후 코드 작성: 테스트 케이스를 작성한 후, 그..
-
Spring Boot: Java에서 Kotlin으로 (1) - Java vs KotlinSpring 2024. 7. 26. 21:03
Spring boot 2.7.x 버전은 2025년 2월 13일을 끝으로 지원이 종료 됩니다. 2025년 2월 종료일이 되기전까지 Spring boot 3.x 버전으로 넘어가야하는데 3.x 버전부터는 Java 버전을 17이상만 사용할 수 있어 기존 Spring boot 를 kotlin 으로 대체하던지 Java 버전을 17이상 올려야하는 양자택일의 상황이 펼쳐져있습니다. Java VS KotlinJava와 Kotlin은 둘 다 JVM (Java Virtual Machine) 언어로서, 주로 Spring Boot와 같은 프레임워크와 함께 백엔드 개발에 사용됩니다. 이 두 언어의 선택은 프로젝트의 요구사항과 개발 팀의 선호도에 따라 달라질 수 있습니다.Java 버전별 지원기간 Java LTS 버전 출시일 공..
-
[spring boot] JAVA 의 생성자와 Spring 의 @Bean (2)Spring 2023. 4. 22. 20:23
생성자의 특징생성자의 이름은 클래스 이름과 동일해야 합니다.생성자는 리턴 타입을 가지지 않으며, void도 허용되지 않습니다.클래스는 여러 개의 생성자를 가질 수 있으며, 이를 생성자 오버로딩(Constructor Overloading)이라 합니다. 이때, 생성자들은 매개변수의 개수, 타입, 순서 등이 달라야 합니다.생성자를 명시적으로 정의하지 않으면 컴파일러는 매개변수가 없는 기본 생성자(Default Constructor)를 자동으로 생성합니다. 단, 클래스 내에 이미 다른 생성자가 정의되어 있다면, 컴파일러는 기본 생성자를 자동으로 추가하지 않습니다.Java에서 생성자 예시:public class Person { private String name; private int age; /..
-
[spring boot] JAVA 의 생성자와 Spring 의 @Bean (1)Spring 2023. 4. 22. 20:17
자바의 생성자에 대하여 자바에서 객체 지향 프로그래밍을 다룰 때 생성자는 필수적으로 알아야 하는 요소입니다. 이 글에서는 자바 생성자의 개념과 사용법에 대해 알아보겠습니다. 생성자란? 생성자(Constructor)란 객체가 생성될 때 자동으로 호출되는 특별한 메소드입니다. 생성자는 주로 객체의 멤버 변수들을 초기화하는 데 사용되며, 객체가 처음 생성될 때 한 번만 호출됩니다. 생성자의 특징 생성자의 이름은 클래스 이름과 동일해야 합니다. 생성자는 반환 값을 가지지 않으며, void 형태도 사용할 수 없습니다. 생성자는 오버로딩이 가능합니다. 즉, 같은 이름의 생성자를 여러 개 정의하고 매개변수의 유형과 개수를 다르게 하여 사용할 수 있습니다. 생성자가 명시적으로 정의되지 않으면 컴파일러가 자동으로 기본 ..
-
[Spring] 자바 스프링에 들어가기에 앞서...Spring 2021. 2. 5. 16:28
오랜만에 글을 쓰게된다. 그동안 많은 일이 있었지만 직접적인 개발은 뭔가 멈춰있는듯한 느낌이어서 딱히 글을 쓸게 없었다. 하지만 이번에 큰 변화가 있었다!! 드디어 입사 1년만에 Java를 하게 되었다. Javascript도 신선한 경험이었고 뭐랄까 스크립트 언어라서 그런지 날것 그대로의 느낌이었다. 내가 어떻게 요리를 하든 일단 요리는 완성이 되는 느낌이었다. 그러나 단점으로는 "규정"이라는게 없는 느낌이라 개바개 프바프인것같다 어느 개발자가 구조를 만들었느냐에 따라 말그대로 언어만 같을 뿐이지 함수,변수,클래스 등 구조가 천차만별이다. 그래서 매번 초보자로 돌아가는듯했다. 또한 기존 프로젝트가 ES5를 기준으로 제작되어서 옛날틱한 코드들도 많았고 프론트개발자가 작업한건지 콜백지옥이라던지 waterfa..