Spring의 핵심 요소는 - 제어 역전(IoC, Inversion of Control) - 관점 지향 프로그래밍(AOP, Aspect Oriented Programming) - 서비스 추상화(PSA, Portable Service Abstraction) 라고 볼 수 있다. 오늘 볼 것은 IoC, 제어의 역전을 위한 DI(Dependency Injection)에 대해서 알아보고자 한다. 참고로 DI는 스프링에만 있는 것이 아니다. DI는 디자인 패턴 중 하나이다. DI, 의존성 주입은 무엇일까, DI에 대해 이야기하기 전에 먼저 의존성이라는 것에 대해 알아야한다. 의존성이랑 A객체 내 B객체가 사용될 때 A는 B에 대해 의존성을 가진다고 한다. 이유인 즉슨 B가 바뀌게 되거나 다른 객체를 사용해야할 때 ..
Spring의 핵심 요소는 - 제어 역전(IoC, Inversion of Control) - 관점 지향 프로그래밍(AOP, Aspect Oriented Programming) - 서비스 추상화(PSA, Portable Service Abstraction) 라고 볼 수 있다. IoC는 우리가 제어의 역전이라고 알고 있다. 그렇다면 제어의 역전이라는 것은 무엇일까, 일반적으로 프로그램을 개발할 때 개발자(주체)가 객체의 생명 주기를 관리하게 된다. 제어의 역전이란 외부(컨테이너, 주체)에서 객체의 생명 주기를 관리하는 것이다. 이러한 IoC를 위해 DI(Dependency Injection)이 사용된다. Spring IoC컨테이너가 우리가 필요한 인터페이스 자리에 객체를 생성해서 넣어준다(DI). Sprin..
자바를 사용하면서 HashMap은 빼놓을 수 없는 컬렉션 중 하나이다. HashMap은 Map 인터페이스를 구현한 컬렉션으로 Key, Value를 가진다. Key와 Value가 짝을 이루어 입력되고 후에 찾을 때 get 메서드에 Key를 전달함으로서 Value 값을 얻을 수 있다. 아래는 String, Integer를 Key, Value로 갖는 예제이다. public class HashMapTest { public static HashMap map; public static void init() { map.put("a", 1); map.put("b", 2); } public static void main(String[] args) { map = new HashMap(); init(); String tes..
Spring에서 DB에 대한 연산을 할 때 @Transactional 어노테이션을 통해 트랜젝션 작업 단위로 묶어서 처리한다. 트랜젝션을 위해 @Transactional 어노테이션을 붙여도 동작하지 않는 상황에 주의해야한다. 1. @Transactional을 붙인 메서드의 접근지정자가 private인 경우 public class GameService { //.......... public void doSave() { save(); } @Transactional private void save() { //.......... } } 이는 Spring AOP가 프록시 기반으로 하기 때문에 발생하는 것으로 접근지정자를 public으로 지정하면 된다. 2. @Transactional이 붙지 않은 메서드에서 @Tr..
싱글톤 패턴은 최초 한번만 메모리를 할당하고 객체를 만들어 사용하는 디자인 패턴으로 생성자를 반복호출해도 최초 생성된 객체를 반환해준다. 장점 - 객체를 한개만 만들어서 메모리 낭비가 적다 - 싱글톤 객체와 다른 객체들 간의 데이터 공유가 쉽다 단점 - 싱글톤 클래스의 역할이 커지면 결합도가 높아져 객체 지향 원칙에 어긋날 수 있다. - 멀티쓰레드 환경에서 중복 초기화가 발생할 수 있다. 싱글톤을 구현하는 여러 방법 static 활용 public class Singleton { private static Singleton instance = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return instanc..
Spring의 핵심 요소는 - 제어 역전(IoC, Inversion of Control) - 관점 지향 프로그래밍(AOP, Aspect Oriented Programming) - 서비스 추상화(PSA, Portable Service Abstraction) 라고 볼 수 있다. 오늘은 그 중에서 AOP에 대해서 정리해보려고 한다. AOP란 무엇일까?AOP는Aspect Oriented Programming, 관점 지향 프로그래밍은 절차지향 프로그래밍과 같이하나의 패러다임이라고 볼 수 있다. AOP는 좀 더 비즈니스 로직에 집중하는 것을 말한다. 가령 우리가 어떤 물품을 판매하는 사이트를 만들었다고 가정하면, 그 안에는 여러 기능들이 존재할 것이고 그 기능들은 데이터베이스를 통해 데이터를 가져오거나 저장할 것이..
공부한 것을 기록하기 위한 글입니다. JPA(Java Persistence Api) 우선 JPA를 배우기 전에 JPA가 무엇인지 부터 알아야할 것같습니다. 일반적으로 Spring으로 개발 시에 Mybatis와 같은 ORM 프레임워크를 활용합니다. ORM을 사용하게 되면 쿼리를 통해 DB로 부터 데이터를 가져온 후 이를 VO 또는 DTO 객체로 받아서 데이터를 가공 또는 처리하는 순서로 진행이 될 것입니다. 이는 아주 간단한 데이터를 조회할 때도 동일하게 동작합니다. Service(Java, xml) - Mybatis - JDBC - DB 간단하게 작성하면 위 구조로 동작을 한다고 볼 수 있다. 여기서 작성한 쿼리를 통해 가져온 결과를 DTO 객체에 매핑을 해주게 된다 위와 같이 동작을 하게 되면 단순 조..
- Total
- Today
- Yesterday
- IOC
- Get
- di
- 자바
- 디자인 패턴
- 의존성 주입
- 싱글톤
- 외주개발
- 어노테이션
- JPA
- 해시맵
- dependency injection
- 업체선정
- docker
- ioc container
- 싱글톤 패턴
- Singleton
- 의존성
- 디자인패턴
- IoC 컨테이너
- @Transactional
- 스타트업
- MQ
- HashMap
- 트랜젝션
- 스프링
- 카프카
- Tistory
- Kafka
- Spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |