Life Developer
인생 개발자
전체 글 (141)
DI (Dependency Injection) 의존성 주입

객체간 의존하는 것이 아니라 외부에서 주입하는 개념이다.

 

생성자를 이용한 의존성 주입

setter메소드를 이용한 의존성 주입

초기화 인터페이스를 이용한 의존성 주입

'Developer' 카테고리의 다른 글

weaving이란 무엇인가?  (0) 2020.07.23
AOP란 ? (Aspect Oriented Programming)  (0) 2020.07.23
IOC??제어의 역전?  (0) 2020.07.23
쓰레드란  (0) 2020.07.23
제네릭(generic)이 도대체 뭘까? 제대로 알고가자  (0) 2020.07.23
  Comments,     Trackbacks
IOC??제어의 역전?

스프링 쓰기 전에는 개발자가 객체와 메서드 등을 생성 관리한다.

 

그러나 스프링에서는 프로그램의 흐름을 프레임워크가 주도를 한다.

 

객체의 생성, 생명주기 등을 컨테이너에서 관리를 한다는 것이다.

 

이처럼 제어권이 컨테이너로 넘어가게 되고 이를 제어의 역전이라고 한다.

'Developer' 카테고리의 다른 글

AOP란 ? (Aspect Oriented Programming)  (0) 2020.07.23
DI (Dependency Injection) 의존성 주입  (0) 2020.07.23
쓰레드란  (0) 2020.07.23
제네릭(generic)이 도대체 뭘까? 제대로 알고가자  (0) 2020.07.23
SID와 service name 차이  (0) 2020.07.23
  Comments,     Trackbacks
쓰레드란

OS에서 크롬을 이용해 인터넷을 하면서 동시에 엑셀문서를 작성도 하고 유튜브도 시청하기도 한다.

 

동시에 여러 프로그램이 실행이되도 CPU는 시간을 분할하여 프로세스마다 우선권을 주어 작업을 처리한다.

 

이런 운영체제에서 실행되는 하나의 프로그램 단위를 프로세스 라고한다.

 

쓰레드는 프로세스 내에서 실행되는 세부 작업단위이다.

 

프로세스가 하나 이상의 쓰레드를 사용한다면 멀티 쓰레드라고 부른다.

 

 

프로세스 - 운영체제에서 실행되는 하나의 프로그램 단위

쓰레드 - 프로세스 내에서 실행되는 세부 작업단위

  Comments,     Trackbacks
제네릭(generic)이 도대체 뭘까? 제대로 알고가자

제네릭이 자바에서 아주 중요하다.

 

과연 제네릭이 뭘까?

 

제네릭이란 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다.

 

타입을 파라미터화 해서 컴파일시 구체적인 타입이 결정되도록 하는것이다. (자바 5부터 추가된 기능)

 

어렵다.

 

제네릭은 컬렉션에 널리 사용된다. 간단하게 컬렉션 ArrayList와 List를 통해 알아보자.

 

// ArrayList

ArrayList<String> arrList = new ArrayList<String>();

 

// List

List<Integer> list = new ArrayList<Integer>();

 

현재 ArrayList를 보면 <>안에 String , List의 <>안에Integer가 들어가 있다.

 

이 <>를 제네릭이라고 하는데, 이 <>에 어떠한 타입을 선언해주어 해당 ArrayList, List등이 사용할 객체의 타입을

 

지정해준다는 뜻이다. <T> 이런 것을 타입 파라미터라고 한다.

 

즉, 다룰 객체의 타입을 미리 명시하여 객체의 형변환을 할 필요가 없게하고, 내가 사용하고 싶은 데이터 타입만

 

사용할 수 있게 해준다는 것이다.

 

 

 

public class Generics {

 

    public static void main(String[] args) {

        

        ArrayList<Sports> arrList = new ArrayList<Sports>();

        arrList.add(new Sports());

        arrList.add(new Soccer());

        arrList.add(new Baseball());

        

        Sports sports = arrList.get(0);

        Soccer soccer = (Soccer) arrList.get(1);

    }

 

}

 

class Sports{}

 

class Soccer extends Sports{}

 

class Baseball extends Sports{}

 

 

"제네릭이란 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다."

에서 위 예제의 클래스 내부는 ArrayList클래스가 될것이고 외부에서 결정한 데이터 타입이 Sports가 되는것이다.

그렇다면 ArrayList 클래스를 추측해볼수가있다.

ArrayList <T>{ ~~ } 라는것을 추측을 해볼수가 있다.

 

 

제네릭 사용시 장점

1. 타입의 안정성 - 의도하지 않은 타입의 객체가 저장되는 것을 막고, 다른 타입의 객체로 인한 타입형태가 맞지 않아

발생하는 문제를 없애준다. (컴파일시 강한 타입체크를 할수 있다.)

2. 불필요한 형변환을 줄여 코드가 간결함 - 타입을 미리 명시함으로서 다른 타입의 객체가 저장되지 않아서 객체를

꺼내 사용할때 형변환으로 타입을 맞출 필요가 없어서 코드가 간결해진다.

 

 

비제네릭 - public class Box{} 은 안보이지만 아래처럼 extends Object가 생량되어있는것이다.

이렇게 되면 아래처럼 사용시 빈번한 타입변환이 발생되며 성능이 저하된다.

모든 객체는 Object의 자식이므로 모두 넣을수 있지만 빼서 사용할때는 형변환을 꼭해야한다. (비효율적)

 

 

타입 파라미터 T를 만들어도 box 생성시 타입을 구체적으로 정하지 않으면 자동으로 <Object>가 붙는다.

 

효율적인 제네릭 사용법

 

'Developer' 카테고리의 다른 글

AOP란 ? (Aspect Oriented Programming)  (0) 2020.07.23
DI (Dependency Injection) 의존성 주입  (0) 2020.07.23
IOC??제어의 역전?  (0) 2020.07.23
쓰레드란  (0) 2020.07.23
SID와 service name 차이  (0) 2020.07.23
  Comments,     Trackbacks
SID와 service name 차이

SID는 하나의 인스턴스를 말한다. (인스턴스 이름)

SID가 필요한 이유는 한 서버에 여러개의 인스턴스가 기동될 수 있으르모 구별하는 태그가 필요해서 그렇다.

따라서 SID는 DB서버에 필요한 정보이다.

 

service name은 여러개의 인스턴스를 모아 하나의 서버 혹은 시스템을 구성한 것을 말한다.

서버 한대에 두개의 인스턴스를 묶어 사용할 경우 service name을 가지게한다.

'Developer' 카테고리의 다른 글

AOP란 ? (Aspect Oriented Programming)  (0) 2020.07.23
DI (Dependency Injection) 의존성 주입  (0) 2020.07.23
IOC??제어의 역전?  (0) 2020.07.23
쓰레드란  (0) 2020.07.23
제네릭(generic)이 도대체 뭘까? 제대로 알고가자  (0) 2020.07.23
  Comments,     Trackbacks