개발/웹 교육 9

스프링 mvc-3

JSP를 사용하기 위해선 밑에 두 코드를 그래들에 넣어야 한다. 스프링 버전은 2이다. implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' JSP의 시작도 항상 고정되어있다. username: age: 전송 위의 첫줄은 항상 들어가 있어야 한다. 자바 코드를 사용하기 위해서는 로 항상 열고 닫아야 한다. html보다 훨씬 동적으로 사용할 수 있다. 그러나 이렇게 작성하면 코드가 너무 복잡하게 된다. 이 코드를 작성한 사람만 수리할 수 있는.... 그래서 MVC패턴이 나오게 된다 ! controlloer 와 vies로 나온다 controller: HTTP의 요청을 받음, 비지니스 로직을..

개발/웹 교육 2023.11.30

스프링 mvc-2

이름과 나이를 저장하는 사이트! @Test void save(){ //given Member member = new Member("hello",20); //when Member savedMember = memberRepository.save(member); //then Member findMember = memberRepository.findById(savedMember.getId()); Assertions.assertThat(findMember).isEqualTo(savedMember); } 테스트 코드는 이러한 구조를 가지고 있다. @AfterEach() void afterEach(){ //테스트 후 초기화 memberRepository.clearStore(); } 이것도 항상 추가해주기 이름과 나이..

개발/웹 교육 2023.11.29

스프링 mvc-1

HTTP 요청 데이터 get- 쿼리 파라미터 /url?username=kim&age= 20 메세지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 검색, 필터, 페이징 등에 사용 시작은 ?, 추가 파라미터는 & 이름이 중복될 수 있다. 우선순위 대로 잡힌다. 중복으로 보낼 일이 거의 없다. POST - HTML Form 메세지 바디에 쿼리 파라미터 형식으로 전달 username=kim&age=20 ex) 회원가입, 상품주문 등 이렇게 보낸 정보는 여기로 "/request-param"으로 보내지게 된다. 완료! 인텔리j에서도 확인 가능하다. reqest.getParameter()로 확인 가능하다. test는 postman으로! send를 누르면 밑에 ok가 나온다. ge를 age로 수정해서 보..

개발/웹 교육 2023.11.22

스프링 여섯 번째

싱글톤에서 빈 요청은 여러명이 같은 요청의 와도 같은 객체 인스턴스의 스프링 빈을 반환한다. 프로토타입 빈에선 요청마다 새로운 빈을 생성하고 초기화, 의존관계주입후 클라이언트에게 반환하고 버린다. @PreDestroy와 같은 종료메소드 실행이 안된다. - 이러면 메모리는? ?? 펑? 클라이언트가 안꺼주면 계속 누적되는겨? 프로토 타입과 싱글톤을 같이쓰면? 이미 싱글톤안에 프로토타입 빈이 주입이 되어 있다. 프로토타입 빈이 또 생성되지 않는다. 또 생성하고 싶다면 ObjectProvider 스프링에 의존적 JSR-330 Provider gradle에 추가해야한다.단순하고 스프링에 의존적이지 않다. get() 메소드 하나만 가지고 있다. DL = Dependency Lookup 의존관계 조회, 탐색 스코프와..

개발/웹 교육 2023.11.05

스프링 다섯 번째

객체의 생성과 초기화를 나누자! 생성은 내가 public _____ 에서 만들어준 생성자 초기화로 나누는 법은 implements InitialzingBean을 붙이고 여기에 따라 나온 함수에 초기화 해주기 implements에 DisposableBean을 만들어서 파괴될 때 나오는것만들 이건 초창기 버전,, 빈에서 init과 destroyMethod를 이용하여 사용 destroyMethod이걸 사용할 때 내 method이름이 close라면 적어주지 않아도 된다. @PreConstruct와 @PreDestroy 사용을 권한다. 스코프? 빈이 존재할 수 있는 범위

개발/웹 교육 2023.11.05

스프링 네 번째

스프링 빈을 만들 때 마다 @Bean을 계속 하기는 귀찮다. 자동으로 등록하려면 = @ComponentScan 의존관계 주입은 어떻게 하는가? @Autowired로 자동으로 해준다. 생성자에 지정해주면 된다. 시작, 예외 다 지정해줄 수 있다. 디폴트: 내가 있는 폴더의 모든 하위 폴더, 파일 의존관계 주입 방법 -> 생성자 주입을 해라! 생성자 주입 : 생성자를 통해 의존관계 주입, 호출 시점에 딱 1번만 호출 , 생성자가 하나만 있다먄 @Autowired 생략 가능 수정자 주입 : 앞에 이름에 setOOOOOOOO (set필드명) 로 만든다. 필드 주입 : 편하지만 외부에서 변경이 불가능해서 추천 X, 테스트 코드에서만 써보자 일반 메서드 주입 : 한번에 여러 필드 주입 가능, 잘 사용 X why 생..

개발/웹 교육 2023.11.03

스프링 세 번째

beanDefinition 자체가 인터페이스다. 언어나 뭐든 신경쓰지 않는다. 스프링 없이는 요청이 올 때 마다 객체를 새로 만든다. 메모리 낭비가 엄청나다. 해결방안: 객체가 하나만 생성되고 공유한다. how : 두개 이상 생성하지 못하도록 막는다. 1. static영역에 객체 instance를 미리 하나 생성해서 올려둔다. 2. getInstance() 매서드를 통해서만 조회할 수 있다. 3. 생성자를 private로 막아둔다. same == equal 스프링 컨테이너는 싱글톤으로 알아서 적용해서 바꿔준다. 객체 지향을 위한 여러 규칙, 코드의 깔끔함을 다 유지해준다. 주의점 무상태로 설계해야 한다. 값을 변경할 수 없어야한다. - 읽기만 가능해야 한다. !!!!! 중요 !!!!!! 값을 넣으면 바꿔..

개발/웹 교육 2023.11.02

스프링 두 번째

스프링 컨테이너에 @Bean으로 등록해놓은 모든 객체들이 들어간다. 이름과 객체로 들어간다. 이것이 스프링 빈이다. 이름은 항상 다른 이름을 부여해야한다. 아니면 오류 생긴다. 애매하면 하지 말기! 스프링 컨테이너는 객체를 생성 후 의존 관계를 주입한다. iter + tab or enter = 반복 control + art + v = 우변항 적어놓은 것에 자동적으로 좌변항 만들어 getBeanDefinitionNames : 스프링에 등록된 모든 빈 이름을 조회

개발/웹 교육 2023.10.31

첫 진행

스프링은 2.7.17 버전사용 java 11 intelJ 객체 지향에 대해 항상 생각하면서 코딩해야한다. SOLID 역할과 구현을 충실하게 분리한다. 다형성도 활용하고, 인터페이스와 구현 객체를 분리한다. DIP 의존 관계 역전 원칙 - 클라이언트 코드에 구체화 구현 클래스가 존재하였다. > Appconfig가 의존관계를 주입하였다. OCP 확장에는 열려있으나 변경에는 닫혀있어야 한다. - app config에서 변경을 했지 사용 영역의 변경을 하지 않았다. SRP 단일 책임 원칙 - 한 클래스는 하나의 책임만 가져야 한다. - 구현 객체를 생성하고 연결하는 책임은 Appconfig가 담당 - 클라이언트 객체는 실행하는 책임만 담당 alt + insert = 만능 psvm = public static v..

개발/웹 교육 2023.10.30
728x90
728x90