본문 바로가기

springboot

(18)
[vue.js-springboot] todoApp 위와 같은 todoApp을 만들어서 created에서 이런식으로 받아오려고 시도했지만 No 'Access-Control-Allow-Origin' 에러가 떴다. Controller에 @CrossOrigin 어노테이션을 붙여서 해결했다. @CrossOrigin 어노테이션은 모든 도메인의 모든 요청방식에 대해 허용하겠다는 뜻이 된다. 하지만 Controller가 많아졌을 때 그만큼 @CrossOrigin을 매번 추가해야하나? 싶어서 더 알아봤더니 WebConfig를 만들어서 지정한 origin으로부터 온 요청은 모두 허용하게 할 수 있는 방법을 찾았다. @Configuration public class WebConfig implements WebMvcConfigurer { @Override public voi..
[스프링 핵심 원리] 스프링으로 전환하기 @Configuration 스프링에서 설정 정보를 뜻함 @Bean 스프링 컨테이너에 올림 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService = applicationContext.getBean("memberService", MemberService.class); AppConfig에 정의한 @Bean을 스프링 컨테이너에 올리고 getBean으로 가져옴 스프링 빈은 @Bean이 붙은 method의 이름을 스프링 빈의 이름으로 사용한다. "memberService", "orderService" 등 @Bean(name="aaa")로 이름을 지..
[스프링 입문] 6. AOP 만약에 모든 method의 호출 시간을 측정하고 싶다고 했을 때, 호출 시간을 측정하는 것이 공통 관심 사항이 되고, 핵심 로직을 핵심 관심 사항이라고 한다. 호출 시간을 측정하는 것은 한 메소드 전체를 감싸야하기 때문에, 따로 method를 만들어서 사용하기도 힘들다. 그럴 때 AOP를 사용해서 원하는 곳에 공통 관심 사항(시간 측정)을 적용한다. TimeTraceAop를 하나 만든다. @Component @Aspect public class TimeTraceAop { } AOP는 @Aspect라는 어노테이션이 필요하다. 또한 스프링 빈으로 등록해줘야하기 때문에 SpringConfig에 설정을 추가하거나, @Component 어노테이션을 달아준다. 보통 AOP는 직접 등록해서 사용한다. @Compone..
[스프링 입문] 5. 스프링 DB 접근 기술 순수 JDBC 스프링 통합 테스트 JDBC Template JPA 스프링 데이터 JPA h2 데이터베이스의 환경설정을 마쳤다. 순수 JDBC build.gradle에 관련 라이브러리와 application-properties에 연결 설정을 추가했다. implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' spring.datasource.url=jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa JdbcMemberRepository를 새로 만..
[스프링 입문] 4. 회원 관리 예제 - 웹 MVC 개발 홈 화면 추가 웹 기능 - 회원 등록 웹 기능 - 회원 조회 홈 화면 추가 HomeController를 이용해 회원 등록, 조회 페이지로 넘어갈 수 있도록 한다. @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } Hello Spring 회원 기능 회원 가입 회원 목록 웹 기능 - 회원 등록 MemberController에 /members/new 부분을 추가하고, html 코드를 작성한다. @Controller public class MemberController { private MemberService memberService; @Autowired public MemberC..
[스프링 입문] 3. 스프링 빈과 의존관계 Component Scan과 자동 의존관계 설정 직접 Spring Bean 등록 이번에는 구현한 서비스가 화면상에서 동작하기 위해서 Controller와 연결되도록 한다. Controller가 Service를 통해서 회원을 등록하고 조회할 수 있도록 하는 것이 의존관계가 있다고 한다. Component Scan과 자동 의존관계 설정 가장 먼저 Controller는 @Controller 어노테이션을 붙이고 있다면 스프링이 실행될 때 가장 먼저 스프링 컨테이너에 Controller 객체를 생성해서 넣어둔다. 일단 MemberController를 controller 패키지 밑에 새로 만든다. @Controller public class MemberController { private final MemberSe..
[스프링 입문] 2. 스프링 웹 개발 기초 - 회원 관리 예제 비즈니스 요구사항 정리 회원 도메인과 레포지토리 만들기 회원 레포지토리 테스트 코드 회원 서비스 개발 회원 서비스 테스트 비즈니스 요구사항 정리 데이터 : 회원 id, 이름 기능 : 회원 등록, 조회 * 아직 데이터베이스를 뭘 사용할 지 정하지 않은 상태라고 가정 Controller : 웹 MVC의 Controller Service : 핵심 비즈니스 로직 구현 Repository : DB에 접근, 도메인 객체를 DB에 저장하고 관리 Domain : 비즈니스 도메인 객체, ex) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 회원 도메인과 레포지토리 만들기 DB가 선정되지 않았기 때문에 Repository를 Interface로 구현하고 변경할 수 있도록 설계하고, 첫번째로 구현체는 메모리 기..
[스프링 입문] 2. 스프링 웹 개발 기초 - view 정적 컨텐츠 MVC API 정적 컨텐츠 스프링부트는 static 폴더에 파일을 넣어둠으로써 정적 컨텐츠를 다룰 수 있다. MVC MVC가 hello 페이지를 만든 방식이다. @RequestParam을 통해서 get 인자를 넣을 수도 있다. name 인자에 spring을 넣으면 화면에 "hello spring"이 뜬다. API API방식은 @ResponseBody 어노테이션을 붙이고 viewResolver를 사용하지 않는다. http body에 return한 문자 내용을 그대로 반환한다. 소스를 보면 body에 별도의 html 코드 없이 그대로 이 들어가있는 것을 볼 수 있다. 객체를 직접 return할 수도 있다. 객체를 return하면 화면에 JSON 형식의 string으로 표시된다.