싱글톤 빈 요청과 다르게, 프로토타입 빈 요청은 요청마다 새로운 프로토타입 빈을 생성하고 필요한 의존관계를 주입한다. 클라이언트에 전달 후 반환 및 관리는 하지 않는다. 스프링 컨테이너는 프로토타입 빈을 생성, 의존관계 주입, 초기화까지만 처리한다. 프로토타입 빈을 관리할 책임은 클라이언트에 있기 때문에 @PreDestroy 등의 종료 메서드가 호출되지 않는다. package hello.core.scope; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org...
스프링 컨테이너에서 싱글톤은 기본적으로 동작한다. @Test @DisplayName("스프링 컨테이너와 싱글톤") void springContainer(){ // 1. 조회 : 호출할 떄마다 객체 생성 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); // 2. 조회 : 호출할 때마다 객체 생성 MemberService memberService1 = ac.getBean("memberService", MemberService.class); MemberService memberService2 = ac.getBean("memberService", MemberService.class); // 참조 값이 다른 것을 확인..
AppConfig 클래스를 hello.core 디렉터리의 하위에 넣는다. public class AppConfig { public MemberService memberService(){ return new MemberServiceImpl(new MemoryMemberRepository()); } } 이렇게 MemberService() 함수를 정의해를 해주고, MemoryMemberRepository()를 매개변수로 한 MemberServiceImpl 객체를 반환한다. 이는 다음과 같은 코딩 방식을, 이렇게 바꿔주는 것이 가능하도록 한다. 이 코드는 인터페이스만 확인할 수 있으며 구현체에 전혀 의존하지 않는 코드가 되는 것이다. 즉 AppConfig는 생성한 객체 인스턴스의 참조를, 생성자를 통해서 주입 ..
회원 도메인 개발 Member 도메인 package hello.core.member; public class Member { private Long id; private String name; private Grade grade; public Member(Long id, String name, Grade grade) { this.id = id; this.name = name; this.grade = grade; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.nam..
EJB (Enterprise JavaBeans) : 기업 환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델 POJ 의 개념의 도래 (순수 자바로 돌아감) ↓ EJB 컨테이너를 대체할 Spring EJB 엔티티빈 기술을 대체할 Hibernate, JPA의 새로운 표준을 정의하였다. '스프링' 이라는 이름은 전통적인 EJB라는 겨울을 넘어 새로운 시작이라는 뜻을 가짐. + Entity Bean ORM 기술, 쿼리를 쓰지 않고 객체를 기준으로 데이터를 다루는 것 스프링 부트 별도의 웹 서버를 설치하지 않아도 됨 스프링과 외부 라이브러리 자동 구성 단독으로 실행할 수 있는 스프링 Application을 쉽게 생성 핵심 컨셉 : 스프링은 자바 언어 기반의 프레임워크 - 객체 지향 언어 스프링은 좋은 객체 지향 ..
https://github.com/InhaBas/Inhabas.com/discussions/76 새로운 아키텍처 고민 · Discussion #76 · InhaBas/Inhabas.com — 현재 문제점(2021-10-21) — views, DB, 권한간 의존성이 커서 서로 종속적이다. 하나가 수정될 시에 다른 여러곳에 영향을 미칠텐데 그 영향을 최소화할 필요가 있다. (DB 와 views) spring의 dao, domain, d github.com 시험이 끝이나고 IBAS 웹 사이트 운영에 착수하였다,, 나는 과연 잘할 수 있을 것인가,, 일단 디스커션에 올라온 내용들부터 완벽히 이해해보자. DB와 Views 'view 안에서 db속성값을 기술하니, 가독성이 떨어짐' 속성 : 인스턴스로 관리하고자 하..
form 태그를 이용한 간단한 제출란을 만들어보자 ! second 웹 앱 폴더에 forms.py를 만들어서 PostForm 클래스를 만든다. models.py와 forms.py를 따로 구분하는 이유는 다음과 같다. model 클래스를 가져와서 필드명을 바탕으로 Input값을 입력하도록 한다. django의 models, forms 모듈을 사용한다는 것이 가장 큰 차이점이고, label 즉 input 창에 이름을 정하고 있으며 widget 옵션으로 보여질 input 창의 형태도 제시해준다. create url로 이동하면 create 함수를 만나게 되고, PostForm()의 반환값이 저장된 form 변수에 의해 create.html파일에 form 변수가 넘어와 렌더링된다. CSRF 공격을 방어하기 위해 c..
저장, 처리되는 정보의 개념이며, 스키마라고도 부른다. 이러한 모델의 규칙에 따라 만드는 저장 공간을 데이터베이스라고 한다. 즉, 데이터베이스는 모델링 된 테이블들의 집합을 의미한다. 장고에서 모델을 구현하면 자동으로 데이터베이스가 생성될 수 있다. python manage.py makemigrations database의 엔진에 맞는 형태로 코드를 생성해준다. migration 이란, https://docs.djangoproject.com/en/3.2/topics/migrations/ Migrations | Django documentation | Django Django The web framework for perfectionists with deadlines. Overview Download Do..