Languege

Languege/Java & Spring

[김영한 스프링] 의존관계 자동주입

다양한 의존관계 주입 방법 의존관계 주입은 크게 4가지 방법이 있습니다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 생성자 주입이 가장 중요하고 많이 쓰임으로 생성자 주입만 기재하겠습니다. 생성자 주입은 말 그대로 생성자를 통해서 주입을 받는 방법입니다. 생성자 주입의 특징 생성자 호출 시점에 딱 1번 호출되는 것이 보장 불변, 필수 의존관계에 사용 생성자 주입의 특징은 생성자가 딱 1개만 있다면 @AutoWired를 생략해도 자동으로 주입됩니다. (스프링 빈에만 해당) 옵션처리 주입할 빈이 없어도 스프링이 동작해야 하는 경우가 있은데 @Autowired만 사용하면 required 옵션의 기본값이 true로 되어있어서 자동 주입 대상이 없으면 오류가 발생합니다. 자동 주입 ..

Languege/Java & Spring

[김영한 스프링] 싱글톤 컨테이너

웹 애플리케이션과 싱글톤 웹 애플리케이션은 보통 여러 고객이 동시에 서버에 요청을 보냅니다. 스프링이 없는 순수한 DI 컨테이너에 memberService를 클라이언트 A,B,C가 요청한다고 쳤을 때, DI 컨테이너는 매번 다른 객체를 새롭게 생성하게 됩니다. 하지만 고객 트래픽이 초당 100개 1000개씩 생성된다면 메모리 낭비가 심해질 것 입니다. 이를 해결하기 위해서 gof디자인 패턴에서 나오는 싱글톤(Singleton) 이라는 패턴이 나왔는데, 하나의 static 객체를 메모리에 띄우고 이를 재사용하여 시스템의 효율을 높이는 방법입니다. 싱글톤 패턴의 문제점 순수 자바의 싱글톤 패턴은 아래와 같은 형식으로 사용이 가능합니다. 하지만 이 방법에는 여러가지 문제점이 있습니다. 싱글톤 패턴을 구현하는 ..

Languege/Java & Spring

[김영한 스프링] 스프링 컨테이너와 빈

스프링 컨테이너 생성 과정 1.스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext는 스프링 컨테이너라 합니다. 이것은 인터페이스이기 때문에 xml을 기반으로 만들 수도 있고 애노테이션 기반의 자바 설정 클래스로 만들 수 있습니다. AppConfig라는 java 파일을 기반으로 애노테이션 기반의 자바 설정 클래스로 컨테이너를 만들었습니다. 스프링 컨테이너를 부를 때 BeanFactory, ApplicationContext로 구분해서 이야기합니다. 2.스프링 빈 등록 이후 new AnnotationConfigApplicationCon..

Languege/Java & Spring

[김영한 스프링] 스프링 핵심 원리 이해

스프링 핵심 원리 이해에서는 예제를 만들고 객체 지향 원리를 적용하는 방식으로 이루어졌습니다. 첫번째로 private final MemberRepository memberRepository = new MemoryMemberRepository(); 라는 순수한 자바코드를 작성하였고 이에 대한 코드는 인터페이스 뿐만 아니라 구현 객체도 의존하여 OCP, DIP 위반의 문제가 발생합니다. 왜냐하면 변경에는 닫혀있어야 하는 OCP와 구체화에 의존하면 안되는 DIP를 위반하기 때문입니다. 이를 해결하기 위해 private final MemberRepository memberRepository = new MemberRepository(); 라는 인터페이스만을 의존하는 코드를 작성하였고 OCP와 DIP는 해결한 것 ..

Languege/Java & Spring

[JAVA] 자바 Static

Static은 고정된이라는 의미를 가지고 있다. Static 키워드를 사용한다면 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 말한다. 즉, 수명의 주기가 프로그램과 같아 진다는 것이다. 일반적으로 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 Instance는 Heap 영역에 생성된다. Heap영역의 메모리는 Garbege Collector를 통해서 계속해서 관리된다. 하지만 Static 키워드를 통해 생성이 된다면 Static 영역에 할당된 메모리는 모든 객체가 공유하는 특성을 지니며, 이는 Garbege Collecor를 통해서 관리되는 영역이 아니기 때문에 Static을 자주 사용한다면 시스템 성능이 떨어질 수 있다. Static 변수의 특징 - 즉시 호출 가능..

Languege/Java & Spring

좋은 객체 지향 설계의 5가지 원칙 (SOLID 원칙)

SOLID란 객체 지향 설계에 있어서 5가지 원칙을 말한다. •SRP: 단일책임원칙(single responsibility principle) •OCP: 개방-폐쇄원칙 (Open/closed principle) •LSP: 리스코프치환원칙 (Liskov substitution principle) •ISP: 인터페이스분리원칙 (Interface segregation principle) •DIP: 의존관계역전원칙 (Dependency inversion principle) SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이란건 모호하다.(클 수도, 작을 수도 있고 문맥과 상황에 따라 다름) 중요한 기준은 변경인데 변경이 있을때 파급 효과가 적으면 SRP를 잘 따른것 OCP 개방-폐쇄 ..

Languege/Java & Spring

좋은 객체 지향 프로그래밍

김영한님의 스프링 핵심 원리를 듣고 작성하였습니다. 객체 지향 특징 • 추상화 • 캡슐화 • 상속 • 다형성 객체 지향 프로그래밍이란? • 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. (협력) • 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 한다. 유연하고, 변경이 용이? • 레고 블럭 조립하듯이 • 키보드, 마우스 갈아 끼우듯이 • 컴퓨터 부품 갈아 끼우듯이 • 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법 다형성을 실세계에 비유하자면 역할과 구분으로 나눌 수 있다. 위 그림에서 운전자(클라이언트)의 역할은 자..

Languege/C# & ASP.NET

[ASP.NET MVC] Controller 에서 View 로 데이터 전달

컨트롤러에서 뷰로 데이터 전달 컨트롤러에서 뷰로 정보를 전달 하는 방법에 대해 알아보겠습니다. 컨트롤러 클래스는 URL 요청에 대한 응답으로 호출됩니다. 컨트롤러 클래스는 들어오는 브라우저 요청을 처리 하는 코드를 작성 하 고, 데이터베이스에서 데이터를 검색 하 고, 궁극적으로 브라우저에 다시 보낼 응답 유형을 결정 합니다. 뷰는 비즈니스 로직을 수행하거나 DB와 직접 상호 작용하지 않아야 합니다. https://docs.microsoft.com/ko-kr/aspnet/mvc/overview/getting-started/introduction/adding-a-view#passing-data-from-the-controller-to-the-view MVC 앱에 뷰 추가 보기 추가 이 문서의 내용 --> R..

mntdev
'Languege' 카테고리의 글 목록 (3 Page)