기존에는 스프링 의존성 주입을 위해 xml 파일에 코드를 작성했었다. 궁금하다면 클릭 👇 2024.04.09 - [Web/Spring] - [Spring] 의존성 주입과 제어 역행 이번 글에서는 어노테이션을 이용하여 의존성을 자동으로 주입할 수 있는 방법을 알아보도록 하겠다. 바로 @Autowired 어노테이션을 이용하는 것이다. 1. @Autowired의 특징 기존 XML 파일에서 각각의 빈을 DI로 주입했던 기능을 코드에서 애너테이션으로 자동으로 수행함 @Autowired를 사용하면 별도의 setter나 생성자 없이 속성에 빈을 주입할 수 있음 👉 XML 파일에서 빈 설정 후 주입하는 방법에 비해 훨씬 간단함 2. @Autowired 이용 위치 - 필드를 통한 의존성 자동 주입 public class..
Web
애플리케이션에서 사용자의 요구 사항에 따라 클래스 기능을 변경하거나 다른 클래스 기능으로 대체해야 하는 경우, 좀 더 수월하게 대체할 수 있게 도입된 기능이 바로 의존성 주입 DI과 제어 역행 IoC이다. 0. 의존성? 의존성 사용하는 객체를 A 클래스라고 하고 사용되는 객체를 B 클래스라고 할 때, A 클래스에서 B 클래스를 사용하려면 new 키워드를 이용해 B 클래스의 인스턴스를 생성하고 B 클래스의 메서드를 사용하게 된다. 이때 B 클래스에서 구현했던 메서드를 변경하면 그 영향으로 A 클래스에서도 해당 메서드를 변경해야 한다. 이런 관계를 'A 클래스는 B 클래스에 의존한다'라고 한다. 의존은 클래스 의존과 인터페이스 의존이 있다. 만약 둘 중 하나를 선택해야 한다면 인터페이스 의존을 사용하는 것이..
컨테이너가 뭔지 궁금하다면 하단 링크 클릭! 2024.03.29 - [Web] - [Web] 웹 서비스 구조 1. 스프링 컨테이너 Spring Container란? 자바 객체(빈, Bean)의 생명 주기(생성, 관리, 제거 등)를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공한다. 스프링 컨테이너는 XML, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다. 스프링 부트 Spring Boot를 사용하기 이전에는 xml을 통해 직접적으로 설정해 주어야 했지만, 스프링 부트가 등장하면서 대부분 사용하지 않게 되었다. @Configuration 어노테이션이 붙은 클래스를 설정 정보로 사용한다. 클래스 내부에 @Bean 어노테이션이 적힌 메서드를 모두 호출하여 얻은 객체를 스프링 컨테이너에 등록하게 ..
처음에 이클립스에서 Dynamic Web Project를 생성하고 나면, 파일 구조가 아래 사진과 같이 되어 있다. src/main/java 폴더에는 서블릿이 들어 있어야 한다. 브라우저는 webapp 폴더에서부터 접근을 하는데, webapp는 정적 웹 프로그램이 들어 있는 곳이다. html, css 등으로 이루어진 파일이 들어 있으며, 프로그램 기본 주소와 매칭된다. webapp 하단의 WEB-INF는 웹 서버가 사용하는 파일이 들어있는 중요한 디렉토리이다. 따라서 외부에서 곧바로 접근할 수 없게 되어 있다. 그런데, 우리가 작성한 서블릿은 /WEB-INF/classes 디렉토리에 컴파일 된다. 서블릿 파일은 클라이언트에 서비스 하려고 만든 것인데, 클라이언트가 직접 접근할 수가 없다니! 👉 따라서 w..
1. GET 방식 : 입력과 조회 사용하는 경우 원하는 데이터 조회 사용자가 입력할 수 있는 화면 - 태그와 GET 방식 아래는 webapp 하단의 calc 폴더 안에 있는 input.jsp 코드이다. SEND 태그를 이용해서 사용자가 입력하는 내용들을 전송하는 용도로 사용한다. 프로젝트를 실행하고 브라우저에 'calc/input.jsp' 주소를 입력하면 화면을 GET 방식으로 볼 수 있게 된다. SEND 버튼을 누르면 해당 주소를 다시 호출하게 된다. 화면상의 결과는 같지만 주소창의 내용은 ?num1=&num2=가 붙어 있게 변경된 것을 볼 수 있다. SEND 버튼의 type이 submit으로 지정되어 있는데 이 경우 버튼을 클릭하면 태그 내에서 사용자가 입력한 값을 태그의 name 속성값과 함께 전송..
서버 사이드 프로그래밍이란? 서버 쪽에서 프로그래밍을 통해 데이터를 처리할 수 있도록 구성하는 것 1. 개발 시 고려해야 할 점 동시에 여러 요청이 들어온다면 어떻게 처리해야 하는가? 서버에서 문제가 생기면 이를 어떻게 처리해야 하는가? 어떤 방법으로 데이터 전송을 최적화할 수 있을까? 분산 환경이나 분산 처리와 같은 문제들은? 서비스를 새로 개발할 때마다 이런 고민을 새로 해야 한다면 엄청나게 많은 개발 비용, 시간을 소모해야 한다. 자바의 경우 이러한 처리를 JavaEE라는 기술 스펙으로 정리해 두었고, Servlet과 JSP는 여러 기술 중에 하나이다. 2.서블릿 Servlet 서블릿 Servlet? 서버에서 동적으로 요청과 응답을 처리할 수 있는 API들을 정의한 것 서블릿을 지원하는 환경에서 개..
일반적으로 브라우저는 자신이 원하는 정보를 전달하기 위해서 두 가지 방식을 사용한다. 1. 정보 전달 방식 Get 방식 주소창에 직접 원하는 데이터를 적거나 링크를 클릭해서 호출 원하는 웹의 주소를 호출할 때 필요한 데이터를 ?와 &, =를 이용해서 같이 전송하는 방식 주소와 필요한 데이터를 한번에 같이 보내기 때문에 단순 링크로 처리됨 👉 다른 사람들에게 메신저나 SNS 등을 통해서 쉽게 공유가 가능함 주로 특정한 정보를 조회하는 용도로 사용됨 Post 방식 입력 화면에서 필요한 내용을 작성한 후에 '전송'과 같은 버튼 등을 클릭해서 호출 주소와 데이터를 따로 보내는 방식 예) 회원가입, 로그인 웹 화면을 통해서 실제 처리가 필요한 작업을 하기 위해서 사용함 2. 데이터 종류 정적 데이터 항상 동일하게..
1. 정적 페이지 vs 동적 페이지 정적 페이지 Static Pages 동적 페이지 Dynamic Pages 데이터베이스에서 정보를 가져오거나, 서버에서의 처리가 없어도 사용자들에게 보여줄 수 있는 페이지 어떠한 요청에 의하여 서버가 일을 수행하고 해당 결과가 포함된 파일을 보여주는 페이지 - 서버에 미리 저장된 파일이 그대로 전달됨 - url 주소 외에는 아무 것도 필요없음 - 어떤 사용자가 오든 동일한 페이지를 보여줌 - url만으로는 들어갈 수 없는 웹페이지 - 사용자들마다 다른 페이지가 보여질 수 있음 ex) 네이버 검색 결과 ex) 네이버 메일, 지도, 인스타그램, 유튜브 등 2. Web Server와 WAS의 차이 💾Web Server 웹 서버란? 클라이언트가 요청한 정적인 콘텐츠를 HTTP ..
1. 네트워크란? 네트워크란? 👉 여러 컴퓨터들을 통신 회선으로 연결한 것 LAN(Local Area Network) : 가정, 회사, 건물, 특정 영역에 존재하는 컴퓨터를 연결한 것 WAN(Wide Area Network) : LAN을 연결한 것. 인터넷 2. 서버와 클라이언트 서버(Server)란? 👉 서비스를 제공하는 프로그램 처리 결과를 응답으로 제공함 더보기 사용자가 언제 서비스를 요청할지 모르기 때문에 항상 실행해야 함 클라이언트(Client)란? 👉 서비스를 요청하는 프로그램 더보기 크롬, 인터넷 익스플로러, 엣지 등 브라우저가 클라이언트가 될 수 있음 언제든지 사용자에 의해 종료될 수 있음 그렇다면 프로그램들은 어떻게 데이터를 주고 받을까 ❓ 👉 컴퓨터가 연결이 되어야 한다. 3. IP 주..