<commit_before>---
layout: post
title: "토비의 스프링 1장"
description: "1장을 읽고 내용을 간단히 정리"
tags: [study, Spring, Java]
---

# 오브젝트와 의존 관계
  스프링은 자바를 기반으로 한 프레임워크, 그럼 스프링이 무엇을 하고, 뭘 중요하게 여기는 프레임워크인지 확인해 보아야 한다.

* 우리의 핵심목표는 __오브젝트__ 이다 하는 것을 정신을 차리고 나아가면(후략)
    * 오브젝트가 __생성__ 되어 다른 오브젝트와 __관계__ 를 맺고, __사용__ 후 __소멸__ 되는 과정에 주목할 필요가 있다
* 우리는 DI와 IoC랑 AOP와 같은 태크닉을 넘어 결국 다시 OOP로 돌아오게 될 것이다.
    * OOP의 기초와 원칙, 다양한 디자인 패턴, 리팩토링, 검증에 이르는 광범위한 지식이 필요함.
* 스프링은 강요하지 않지만 기준을 준다

## DAO를 만들어보자
* add도 있어야 할 것이고, get도 있어야 할 것이고....
* sql 접속하려면 커넥션도 얻어야 하고....
* <commit_msg>modify post<commit_after>---
layout: post
title: "토비의 스프링 1장"
description: "1장을 읽고 내용을 간단히 정리"
tags: [study, Spring, Java]
---

# 오브젝트와 의존 관계
  스프링은 자바를 기반으로 한 프레임워크, 그럼 스프링이 무엇을 하고, 뭘 중요하게 여기는 프레임워크인지 확인해 보아야 한다.

* 우리의 핵심목표는 __오브젝트__ 이다 하는 것을 정신을 차리고 나아가면(후략)
    * 오브젝트가 __생성__ 되어 다른 오브젝트와 __관계__ 를 맺고, __사용__ 후 __소멸__ 되는 과정에 주목할 필요가 있다
* 우리는 DI와 IoC랑 AOP와 같은 태크닉을 넘어 결국 다시 OOP로 돌아오게 될 것이다.
    * OOP의 기초와 원칙, 다양한 디자인 패턴, 리팩토링, 검증에 이르는 광범위한 지식이 필요함.
* 스프링은 강요하지 않지만 기준을 준다

## 관심사의 분리
* 한 오브젝트, 한 메서드 안에는 다양한 관심 분야가 있다.
    * 예를 들어, DAO를 만들어보자
        * DAO 하나를 만드는 당신은 SQL에 접속, 쿼리, 결과값 핸들링, 자원 해제등의 __관심__ 이 생길 것이다.
        * 이런 관심사들을 조각내야 적절한 확장과 은폐가 가능해지는 것.
* 객체는 __항상 변하며,__ 당신은 새로운 요구조건(예시 : DB가 MySQL에서 오라클로 바뀐다거나)에 대응하기 위해 __예쁜__ 객체를 만들어야 할 필요가 있다.
    * __분리__ 와 __확장__ 을 고려한 설계가 필요하다.
* __관심사의 분리__ : 관심이 같은 것 끼리는 하나의 객체에(혹은 최대한 가까이), 관심사가 다른 종목은 최대한 멀리 떨어뜨린다
    * __효과__ : 관심이 다른 기능, 스펙이 변경될 때 그것과 연관된 다른 객체들에 미치는 영향을 최소화 할 수 있음.

{'fraction_non_alphanumeric': 0.08039867109634552, 'fraction_numerical': 0.0026578073089701, 'mean_word_length': 2.664233576642336, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5006396', 'n_tokens_mistral': 1321, 'n_tokens_neox': 1819, 'n_words': 294}