nano is flowing :-D
인터페이스를 안정적으로 (변화가 없도록) 설계하는 것이 진짜 중요하다! 스프링은 객체 지향의 특징인 다형성을 극대화하여 사용할 수 있도록 한다. SOLID SRP : single reponsibility principle 단일 책임 원칙 하나의 클래스는 한 책임만 갖는다 변경이 있을 때 파급 효과가 적도록! OCP : open / closed principle 개방-폐쇄 원칙 확장에는 열려있고, 변경에는 닫혀있다 설정자(객체를 생성하고 관계를 맺어주는 역할)가 필요 LSP Liskov substitution principle 하위 클래스에서 인터페이스의 규약을 지켜야 한다 컴파일 단계를 얘기하는 것이 아님 ISP Interface segregation principle 특정 인터페이스 여러 개가 범용 인..
컨트롤러가 서비스를 통해서 기능을 수행할 수 있어야 한다. => 의존관계 존재. (컨트롤러가 서비스를 의존한다) 스프링 빈 등록 방법 2가지 컴포넌트 스캔 & 자동 의존관계 설정 방식 @Controller, @Service, @Repository는 @Component의 특수 케이스, @Autowired를 통해 관계 형성 스프링 컨테이너에 @Controller가 되어있는 컨트롤러를 넣어둔다. (스프링 빈으로 자동 등록 -> 싱글톤 => 같은 스프링 빈이면 같은 인스턴스) 이후 스프링에서 관리. new로 인스턴스를 생성하지 말고 컨테이너에 등록해서 사용. -> @Autowired 컨테이너에 컨트롤러가 뜰 때 생성자 호출 @Autowired 시 스프링이 컨테이너 내 컨트롤러와 연관된 객체를 연결 (DI) 객체..
1. 비즈니스 요구사항 데이터 회원ID 이름 기능 회원 등록 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) 컨트롤러 : web MVC의 Controller 서비스 : 비즈니스 로직 ex) 중복 회원가입 불가 도메인 : DB에 저장하고 관리되는 비즈니스 도메인 객체 리포지토리 : 비즈니스 도메인 객체를 가지고 핵심 비즈니스 로직이 동작하도록 구현 위 계층형 구조를 따라서 구현할 것. 요구 사항에서 아직 DB가 선정되지 않았으므로 인터페이스로 설계 (저장소가 정해지면 바로 바꿔 끼울 수 있도록) 개발을 진행하긴 해야하므로 초기에는 메모리 기반 데이터 저장소를 사용하도록 한다! 회원 도메인 & 리포지토리 생성 1. 회원 객체 hello.hellospring에 domain package 생성 후 그..
Reference : https://www.youtube.com/watch?v=GsZk8s5JdWg 프레임 생성하기 프레임을 생성하고 우측 Design 기능을 통해 위치 좌표와 width, height를 정할 수 있다. (수식으로도 입력 가능하다 ex> 720을 입력하고 싶을 시, 1440/2를 입력하여도 자동 변환 된다) 프레임 선택 후 Shift + 2 : 해당 프레임을 화면 중앙에 표시한다. command(Ctrl) + R : 해당 프레임 이름 변경 사각형 모양의 박스는 위와 같이 만들 수 있다. 사각형 클릭 후 Frame selection을 선택하면 해당 객체와 같은 크기의 프레임이 생성된다. 선택된 객체의 design - constraints를 scale로 변경하고, 상위 프레임인 Left 프레..