Web/Spring

Web/Spring

[Spring] @Resource 와 @Autowired 차이

@Resource 어노테이션과 @Autowired 어노테이션의 차이 두 어노테이션 모두 의존성을 주입하는 어노테이션이다. 해당 어노테이션을 사용하여 IoC 컨테이너에 등록된 빈 객체를 자동으로 주입한다. @Autowired 어노테이션에 대한 자세한 설명은 검색하면 많은 정보가 나오므로 생략하도록 한다. @Resource 어노테이션과 어떤 차이가 존재하는지를 중점적으로 살펴본다. 편의상 해당 글에서 모든 의존성 주입 방법 예시는 필드 주입으로 한다. @Autowired - 필드, 메서드, 생성자에 사용할 수 있다. - Bean의 타입을 사용해서 주입할 빈 객체를 찾는다. - 하나의 인터페이스는 한 개의 클래스로만 구현할 수 있다. (두 개 이상의 클래스가 구현하면 안 된다.) 마지막 특징 때문에 @Reso..

Web/Spring

[Spring Boot] pdf 파일 다운로드 및 현재 탭에서 열기

pdf 파일 다운로드 및 현재 탭에서 열기 스프링에서 파일 다운로드 구현은 어렵지 않다. 다운로드 파일 유형이 pdf인 경우, 다운로드하지 않고 현재 탭에 미리보기로 띄워야 하는 경우도 있는데, 이도 어렵지 않다. 파일 다운로드 간단하게 ResourceLoader를 사용하여 파일 다운로드하는 방법을 알아본다. html 부분이다. 파일 다운로드 태그를 작성하고, 해당 태그 클릭 시 파일 다운로드를 진행하게 한다. myFile.pdf 부분은 파일명을 집어넣는다. 데이터 정보로 파일명을 불러올 수도 있지만 현재 예제에서는 정말 단순하게 파일 다운로드만 살펴볼 것이기 때문에 파일명을 myFile.pdf로 지정해주었다. 다음은 Controller 부분이다. 기존 Controller를 사용해도 되긴 하지만 파일 기..

Web/Spring

[Spring] 의존성 주입 (Dependency Injection, DI) 예제

의존성 주입 (Dependency Injection, DI) MVC 모델을 사용하여 개발한다고 가정할 때 Controller에서는 Service에 있는 메서드를 호출해야 하고, Service에서는 Repository(or DAO,...)에 있는 메서드를 호출해야 한다. 이런 상황에서 Controller에서는 Service에 의존한다 말하고, Service는 Repository에 의존한다고 얘기한다. interface MemberRepository {...} public class JdbcMemberRepository implements MemberRepository {...} public class MyBatisMemberRepository implements MemberRepository {...} p..

Web/Spring

[Spring] JDBC, JDBC Template 예제

Spring JDBC, JDBC Template 예제 요즘에는 보통 MyBatis나 JPA를 이용해서 개발하지만 옛날에는 JDBC로 개발했던 적이 있었다. JDBC는 JSP로 웹 개발할 때 사용해서 익숙하지만 JDBC Template는 처음 보는 것이어서 두 개의 예제를 비교해본다. JDBC import hello.hellospring.domain.Member; import org.springframework.jdbc.datasource.DataSourceUtils; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql..

Web/Spring

[Spring] 스프링 빈을 등록하는 두 가지 방법

Spring Bean(스프링 빈) 스프링 IoC 컨테이너(객체를 생성하고 관리하며 객체끼리의 의존관계를 연결함)가 관리하는 객체들을 Bean이라고 부른다. 스프링 컨테이너에 등록된 객체를 스프링 빈이라 하는 것이다. 본 글에서는 스프링 IoC 컨테이너를 편의상 스프링 컨테이너라고 작성한다. 이때 스프링 컨테이너가 관리하는 객체는 우리가 평상시 new 연산자로 생성하는 객체가 아닌, ApplicationContext.getBean()으로 얻어질 수 있는 객체이다. new 연산자로 생성한 객체는 사용자가 직접 생성한 객체이므로 스프링 컨테이너에서 관리되지 않는다. 스프링 컨테이너에서 관리하는 객체는 ApplicationContext가 생성한 객체이다. 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때 (따로..

Web/Spring

[Spring Boot] @AfterEach, @BeforeEach 예제

Test case 작성 스프링 부트에서는 테스트 메서드 작성 시 메서드 앞에 @Test 어노테이션을 명시한다. 각각의 테스트 메서드는 독립적으로 실행되어야 한다. 테스트는 각 테스트끼리의 순서가 관계없어야 하고, 의존 관계가 없어야 한다. 따라서 하나의 테스트가 끝날 때마다 공용 데이터들을 깔끔하게 지워야 한다. 이를 위해 @BeforeEach와 @AfterEach 어노테이션을 사용한다. 테스트 메서드 작성 시 메서드 명은 한글로 작성해도 상관없다. 빌드 시 실제 코드에 포함되지 않기 때문이다. @SpringBootTest 스프링 부트를 사용해 Test 한다는 것을 명시한다. 데이터베이스 정보를 스프링에서 가지고 있을 때 사용한다. 해당 어노테이션이 붙으면 스프링 컨테이너와 테스트를 함께 실행한다. @T..

Web/Spring

@ResponseBody 작동 원리

@ResponseBody 작동 원리 @ResponseBody 어노테이션을 사용하지 않는 메서드와 @ResponseBody 어노테이션을 사용하는 두 개의 메서드를 비교하여 살펴본다. @ResponseBody 어노테이션을 사용하여 페이지에 데이터만을 전달할 수 있다. @RepsonseBody 사용 안 함 첫 번째로는 @RepsonseBody를 사용하지 않는 일반적인 메서드이다. 스프링 부트의 경우 웹 브라우저에서 (ex) localhost:8080/mvc를 통해 사이트에 접속하면 내장 톰캣 서버에서 mvc를 스프링에 넘겨주고, 스프링에서는 컨트롤러에 있는 Mapping을 따라 찾아간다. Mapping 된다면 ViewResolver로 토스되어(View를 통해서) 처리된다. @GetMapping("mvc") p..

Web/Spring

[Spring] 스프링에 관한 잡다한 이야기

스프링에 관한 잡다한 이야기 프로젝트 생성 이클립스에서 스프링 프로젝트 생성 시 다음과 같은 창이 뜬다. 옛날에는 (옛날이라 해도 1년도 안됐지만) 별생각 없이 만들어서 썼었는데 위에 보이는 Service URL은 대체 무엇일까.. 이는 스프링 프로젝트 설정을 기본적으로 Service URL에서 가져온다는 뜻이다. 실제로 https://start.spring.io/ 홈페이지에 들어가 보면 스프링 프로젝트를 설정할 수 있다. 메이븐 프로젝트로 할지, 그래들 프로젝트로 할지 설정할 수 있고 Language와 Spring Boot 버전, Project 정보 등을 설정할 수 있다. (최근에는 그래들 프로젝트로 많이들 설정한다.) 아래에 Dependencies 오른쪽의 ADD ... 버튼을 클릭하여 Depende..

Web/Spring

[Spring Boot] Eclipse에서 Spring Boot 시작하기

이클립스에서 스프링 부트 시작하기 💾 설치 방법 이클립스를 실행한 뒤, Help -> Eclipse Marketplace를 실행시킵니다. spring을 검색하면 아래와 같은 화면이 나옵니다. 첫 번째에 있는 Spring Tools 4를 설치합니다. 모두 선택이 된 상태에서 Confirm을 클릭합니다. accept를 클릭한 뒤 Finish를 클릭합니다. 오른쪽 하단을 보시면 설치가 되는 중입니다. 설치가 완료된 후 아래와 같은 창이 뜹니다. Restart Now를 클릭하여 이클립스를 재시작하면 설치가 끝난 것입니다. 설치가 성공적으로 완료되었다면 상단에 빨간색 네모 쳐진 아이콘이 보일 것입니다. 해당 아이콘을 클릭하면 Boot Dashboard를 열 수 있습니다. 💻 프로젝트 생성 1 스프링 프로젝트를 하..

밈아
'Web/Spring' 카테고리의 글 목록