목록전체 글 (12)
백정탈의 개발 블로그
서블릿 자바를 사용한 웹기술로 클라이언트의 요청을 처리하고 반환하는 웹 애플리케이션 기술이다. 특징 JAVA의 스레드를 이용하여 동작 MVC패턴에서 컨트롤러로 이용됨 서블릿 컨테이너에서 실행 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리 서블릿 컨테이너 종료시 함께 종료한다. html을 사용해서 요청에 응답한다 @ServletComponentScan :서블릿 자동 등록, 직접 등록해주는 애노테이션 package hello.servlet; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.sp..
package hello.core.lifecycle; public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출, url = " + url); connect(); call("초기화 연결 메시지"); } public void setUrl(String url) { this.url = url; } //서비스 시작시 호출 public void connect() { System.out.println("connect: " + url); } public void call(String message) { System.out.println("call: " + url + " message = " + m..
클라이언트에서 서버로 데이터 전송 방식 1. 쿼리 파라미터를 통한 데이터 전송 GET 2. 메시디 바디를 통한 데이터 전송 POST PUT PATCH 클라이언트에서 서버로 데이터 전송 상황 정적 데이터 조회: 이미지, 정적 텍스트 문서(리소스 경로) 동적 데이터 조회: 주로 검색어나, 검색어 필터(쿼리 파라미터) HTML Form을 통한 데이터 전송(메시디 바디:form 태그) HTTP API를 통한 데이터 전송(메시디 바디:application/json) HTML Form HTML에 있는 form태그의 내용을 메시지 바디를 통해서 데이터를 전송
의존관계 주입 의존관계 주입은 크게 4가지 방법이 있다. 1.생성자 주입 수정자 2.주입(setter 주입) 3.필드 주입 4.일반 메서드 주입 생성자 주입 수정자 생성자 호출 시점에 딱 1번만 호출됨 불변,필수 의존관계 사용 주로 많이 사용한다. 생성자가 딱 1개만 있으면 @Autowired를 생략해도 된다. 예) @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; //@Autowired public OrderServiceImpl(MemberRepository membe..
컴포넌트 스캔 컴포넌트 스캔: 설정 정보 없이 자동으로 스프링을 빈을 등록하는 기능 예)@Component, @Controller, @Service, @Repository, @Configuration @Autowired: 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 의존관계 주입한다. @Component public class MemberServiceImpl implements MemberService{} @Component public class OrderServiceImpl implements OrderService{} @Component public class MemoryMemberRepository implements MemoryMemberRepository{} 이런 형식으로 스프링 컨테이..
싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴, 이미 만들어진 객체를 공유해서 효율적으로 사용가능하다. 하지만 너무 많은 요청에 많이 공유시키면 다른 클래스들 간의 결합도가 높아지게 되는데, 이때 개방-폐쇄 원칙( OCP)이 위배된다. 싱글톤 컨테이너 위의 단점을 극복하는 것이 싱글톤 컨테이너다.스프링 컨테이너가 싱글톤 컨테이너 역할을 하는데 하나의 객체만 생성해서 관리한다. 이렇게 싱글톤 객체를 생성하고 관리하는 기능을 싱글톤 레지스트리라 한다. DIP, OCP원칙을 지킨다. 주의점 하나의 객채를 공유하기 때문에 무상태(stateless)로 설계해야 한다. 특정 필드가 변경할수 있는 코드가 존재하면 안되고 가급적 읽기만 가능해야한다. 필드대신 지역변수,공유하지 않는 변수..
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext는 스프링컨테이너이다. new AnnotationConfigApplicationContext()를 통해 스프링 컨테이너를 만들어 준다. 그럼 비어있는 빈 저장소가 생겨 AppConfig.Class에 있는 @Bean 어노테이션 붙은 빈을 저장소에 등록해준다. @Configuration 직접 등록할 스프링 빈을 애노테이션또는 Bean을 등록하기 위한 애노테이션 @Bean 빈 설정파일에 직접 빈을 등록한다. @Configuration static class SameBeanConfig { @Bean publi..
인터넷 프로토콜 4계층 TCP/Ip 계층 OSI 7계층 응용 계층 ---- 응용 계층 ---- HTTP, FTP 표현 계층 셰션 계층 전송 계층 ---- 전송 계층 ---- TCP, UDP 인터넷 계층 ---- 네트워크 계층---- IP 네트워크 인터 ---- 데이터링크 계층 페이스 계층 물리 계층 IP(Internet Protocol) 지정한 IP 주소(IP Address)에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 IP패킷 정보: 출발지IP, 목적지IP, 전송데이터 특징 비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 비신뢰성: 패킷 소실 가능성, 패킷 순서 문제 발생 프로그램구분:같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 구분이 힘듬..
1. 특정 문자 찾기 입력된 문자열에서 특정 문자를 갯수는 for문을 사용하여 누적하면 된다. public int solution(String str, char t){ int answer=0; str=str.toUpperCase(); t=Character.toUpperCase(t); //System.out.println(str+" "+t); /*for(int i=0; im){ m=len; answer=x; } } return answer; } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); String str=kb.nextLine(); System.out.print(T.solut..
loC(제어의 역전)컨테이너, DI컨테이너(의존 관계 주입) 애플리케이션 실행 시점(런타임)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결 되는 것 의존관계 주입을 사용하면 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 있다. 유연성을 확보하고 결합도를 낮출 수 있게 해준다. 의존성 주입은 말 그대로 의존적인 객체를 직접 생성하거나 제어하는 것이 아니라, 특정 객체에 필요한 객체를 외부에서 결정해서 연결시키는 것을 의미한다. 즉, 우리는 클래스의 기능을 추상적으로 묶어둔 인터페이스를 갖다 쓰면 되는 것이다. 프레임워크 vs 라이브러리 프레임워크가 내가 작성한 코드를 제어하고, 대신 실행하면 그것은 프레임워크가..