목록개발공부 (9)
쉽지않은 블로그
지난 글에 스프링 Bean 이 무엇인지에 대해 설명하면서 @Component를 사용한 방식을 언급했었다 이 방식을 사용할 경우 다른 Bean 과의 의존관계를 갖는 경우 어떻게 처리를 해야 될 것인지에 대해 정리해본다. CarserviceImpl.java @Component public class CarServiceImpl implements CarService{ private EngineService engineService; ... ... } ****************************************** EngineBMW.java @Component public class EngineBMW implements EngineService{ private int power = 10; } Car..
스프링 컨테이너의 역할 느슨한 결합을 해결하기 위해서 IoC 컨테이너를 사용하여 객체를 나의 코드(명확히 말하면 내가 구현한 클래스)가 직접 관리(생성)하는 것이 아니라 모든 관리의 주체를 스프링 프레임워크에게 부여(역전) 시켜 inversion of Control을 가능케 한다고 배웠었다 굳이 이렇게 역전을 시키는 이유에 대해서는 다음 글을 참고하면 좋을 것 같다. dutchcoffee.tistory.com/27 [Spring] DI & IOC (1) 느슨한 결합력 자바의 객체지향 프로그래밍 관점에서 보게 되면 1) 클래스가 다른 클래스를 사용하거나 2) 클래스가 다른 클래스를 상속하거나 등 어떤 클래스 객체가 하는 일이 다른 객체에 영향을 받게 되 dutchcoffee.tistory.com 또한 싱글..
좋은 객체지향을 설계할수 있는 5가지 원칙이라고 유명한 SOLID 원칙이라고 있다. 처음에는 이해하기 어려웠으나 스프링을 공부하면서 서서히 이 의미를 알거같다. 앞으로 이 5가지 원칙을 기준으로 내가 객체지향의 깊은 뜻을 이해하며 코딩을 하고 있는지 돌이켜보면 좋을거같다 1.SRP (Single Responsibiliy Principle) 단일 책임 원칙 "하나의 클래스는 하나의 책임(일)을 맡아야 한다"는 원칙이다. 객체가 만약 여러 책임을 가지고 있다면 다른 객체와 결합력이 높아질수 있다 만약 변형이 일어나도 최소한의 변경이 일어나게끔 설계해야 된다. 2.OCP (Open-Closed Principle) 개방-폐쇄 원칙 "확장에 대해 열려 있어야 하고 , 수정에 대해서는 닫혀 있어야 한다." 말 자체..
전 페이지에서 IoC컨테이너를 이용하면 손쉽게 다음 코드와 같이 손쉽게 DI와 IOC 기능을 구현할 수 있다고 했었다. public class A { @Autowired B b; public doSomeThing() { b.getDate(); .... .... } } //*************************************** @Component public class B { public int getData() { // TODO Auto-generated method stub return 10; } } IoC 컨테이너를 사용하여 DI (Dependency Injection 은 @Autowired 어노테이션을 이용하여 쉽게 처리해주었고 IOC (Inversion of Control) 제어 ..

전 페이지에서 결합력이 무엇인가를 알아보았다. 머리가 아프니 그냥 결합력을 아예 신경 쓰지 되지 않고 코딩을 하면 되지 않냐고 생각할 수 있는데 Spring-MVC의 구조를 예시로 보면 스프링을 이용하여 web application을 만든다고 하면 다음과 같은 구조로 나오게 될 것이다 1. 사용자(Client Application )는 사용자를 나타낸다 2.Controller 는 사용자가 요청을 보낼때 제일 먼저 작동하는 함수 3.Service는 비즈니스로직을 처리하는 함수 4.Repository는 DB와 상호작용을 하는 함수 이렇게 역할을 분리 시키는 이유는 스프링에서 지향하는 SRP( Single Responsibility Principle) 관리를 용이하게 하기 위해 하나의 함수는 하나의 일에만 집..
자바의 객체지향 프로그래밍 관점에서 보게 되면 1) 클래스가 다른 클래스를 사용하거나 2) 클래스가 다른 클래스를 상속하거나 등 어떤 클래스 객체가 하는 일이 다른 객체에 영향을 받게 되면 "결합력이 있다"고 표현한다 일단 다른 클래스를 사용하면 결합력이 있다고 하는데 어떻게 사용하냐에 따라서 강한 결합력과 느슨한 결합력으로 정의될 수 있다 다음 예시를 보자 예시에서는 가정이 있다 "A 인스턴스 안에서 B객체를 사용해야 되는 상황" (spring mvc 관점에서 A를 controller B를 service라고 생각하여도 좋다) class A { private b; public A(){ b = new B(); } public doSomeThing(){ int val = b.getData()..... } }..
쿼리를 실행하는 예제 필요한 파일들 1.DTO , DAO 가 필요함 (정의해줘야 됨) 2.query문이 필요함 3.DAO에 CRUD 역할을 하는 메서드를 만들어야 된다 4.NamedParameterJdbcTemplate 같은 객체가 필요함 (스프링 jdbc가 제공함) 파일 구조 DTO DTO (Data Transfer Object)를 의미함 보통 원하는 데이터베이스의 table의 속성에 맞게 변수를 가지는 게 보통이며 표기법에 주의해야 한다 (예를 들어 mysql에서 속성명이 sale_price 였다면 DTO 변숫값을 salePrice로 camel case로 변환해야 jdbc라이브 러리가 알아서 mapping 해준다 jdbc.core.BeanPropertyRowMapper 가 알아서 해줌 ) 일반적으로 ..

spring-jdbc를 이용하여 드라이버 연결하기 아래 라이브러리를 사용하고자 하는 스프링 버전에 맞게 pom.xml 에 의존성을 주입해준다 spring-conetxt 스프링을 사용하기 위한 라이브러리 spring-jdbc jdbc 라이브러리 spirng-tx 스프링에서 제공하는 트렌젝션 관련 기능 mysql-connector-java mysql에서 제공하는 드라이버 commons-dbcp2 datasource를 사용하기 위하여 주입 1.DB에 연결에 대한 정보를 해주어야 됨 applicationContext (메인 함수 입장에서는)한테 설정을 알려줄 파일이 필요함 해당 역할을 하는 파일이 applicationconfig class가 된다. config라는 패키지를 이용하여 채 설정을 담당하는 파일들을 ..