인프런/스프링 입문13 끝) AOP AOP(Aspect Oriented Programming) 관점 지향 프로그래밍 개념,예시 https://engkimbs.tistory.com/746 [Spring] 스프링 AOP (Spring AOP) 총정리 : 개념, 프록시 기반 AOP, @AOP | 스프링 AOP ( Aspect Oriented Programming ) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 engkimbs.tistory.com 메소드의 호출시간을 측정하고 싶다면? public Long join(Member member) {//같은 이름이 있는 회원은 안됨 (중복방지-> 임의로 지정한 규칙).. 인프런/스프링 입문 2022. 11. 30. 12) 스프링 데이터 JPA SpringDataJpaMemberRepository 인터페이스 package hello.hellospring.repository; import hello.hellospring.domain.Member; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; public interface SpringDataJpaMemberRepository extends JpaRepository, MemberRepository { //interface의 상속은 extends로 한다. 인터페이스는 다중 상속이 가능하다. // jpaRepository를 상속받아야한다. (멤버와, 식별자PK의 타입을 받는다) , // jp.. 인프런/스프링 입문 2022. 11. 28. 11) JPA jdbc -> jdbcTemplate -> JPA 이런순으로 더 간결하고 쉽게 코드를 짤 수있게끔 발전하는것 같다. jdbc 에서 jdbcTemplate으로 교체했을때는 반복적인 코드가 확 줄었지만 sql문은 개발자가 직접 작성해야했다. 그런데 jpa라는 기술을 사용하면 그런 sql쿼리도 jpa가 자동으로 처리해준다. 그럼으로써 개발 생산성을 크게 증가 시킬수있다. jpa를 사용하면 sql과 데이터보다는 객체중심으로 생각할 수 있다. jpa 라이브러리 추가 기존에 쓰던 jdbc는 jpa안에 들어있으므로 없어도된다. implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // jpa를 사용하기 위해 추가 // implementation.. 인프런/스프링 입문 2022. 11. 28. 10) 스프링 JdbcTemplate,RowMapper,lambda 이전에는 순수한 jdbc로 코드를 짜는것을 보았다. 이제는 jdbc -> jdbcTemplate로 바꿔서 어떻게 간결해졌는지 살펴보자. JdbcTemplate 순수 jdbc와 동일한 환경설정을 하면 된다. 이렇게 해준다. JdbcTemplateMemberRepository.java public class JdbcTemplateMemberRepository implements MemberRepository { private final JdbcTemplate jdbcTemplate; @Autowired public JdbcTemplateMemberRepository(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } @Ov.. 인프런/스프링 입문 2022. 11. 28. 9)순수 JDBC, DI(dependency injection)과 다형성의 장점 , 스프링통합테스트 어플리케이션에서 DB를 연결해서 DB에 저장시킬수있게끔 하자. jdbc와 h2를 사용하기위해 dependency 추가 resource 아래 application.properties에 데이터베이스 관련 정보를 적어준다. 예전에는 요즘 jdbc를 사용하지않고 개발할때는 이런식으로 개발을 했었다. 상당히 코드가 길고 복잡했음. 그렇게 JdbcMemberRepository를 개발하고 Spring Config에서 멤버리포지토리 객체를 생성하는곳에서 return new JdbcMemberRepository로 바꿔주면된다. @Configuration public class SpringConfig { @Bean //@Bean 어노테이션 -> 스프링빈을 등록할거다 라는 의미 public MemberService memb.. 인프런/스프링 입문 2022. 11. 27. 8)스프링 DB 접근기술(H2 데이터베이스 설치), 테이블생성,데이터생성,DDL SQL 관리 이전까지 했던건 메모리에 저장했기에 서버를 내려버리면 데이터가 사라졌었다. 그렇게 되면 안되므로 데이터베이스에 데이터를 저장하도록 하자. https://www.h2database.com/html/download-archive.html Archive Downloads www.h2database.com h2를 설치해주자. 맥은 윈도우 기준 설치하고 h2 console 파일을 실행시켜주면 브라우저에 다음과같은 화면이 생긴창이 뜰것이다. 연결해주고 뒤로 다시나오면 test.mv.db 파일이 홈화면에 존재해야한다 체크해준다.. 그다음부터는 이부분을 이렇게 바꿔서 들어가준다. jdbc:h2:tcp://localhost/~/test 이렇게 수정해주면 홈에 있는 파일을 직접 접근하는게 아니라 소켓을 통해서 접근하게되서.. 인프런/스프링 입문 2022. 11. 27. 7)회원 관리 예제 - 웹 MVC 개발 , 회원 웹기능 - 조회 GetMapping을 통해 도메인을 통해 들어왔을시 리소스-> 템플릿-> home.html 이라는 html 모습을 볼 수 있게끔 설정 위와 같은 원리로! 리소스-> 템플릿에 home.html 추가 home.html Hello Spring 회원 기능 회원 가입 회원 목록 코드를 보면 회원가입을 누를시 /members/new로 이동시키고 회원목록을 누를시 /members로 이동시키게끔 해두었다. 스프링을 실행시키고 들어가봤을때 모습 현재는 회원가입,회원목록을 눌러도 화이트라벨 에러페이지만 보여준다. -> 컨트롤러에 매핑해놓지않았으니까. 멤버컨트롤러에 다음과 같은 매핑을 설정해준다. 리턴으로 members/createMemberForm으로 해두었으니 templates 폴더 하위폴더로 members를 생성해준다.. 인프런/스프링 입문 2022. 11. 27. 6)스프링 빈과 의존관계, 스프링 빈 등록방법 1. 컴포넌트 스캔 2. 자바로 직접 등록 스프링 빈을 등록하고, 의존관계 설정하기 회원 컨트롤러가 회원서비스와 회원 리포지토리를 사용할 수 있게 의존관계를 준비하자. 멤버(회원)컨트롤러가 멤버 서비스를 통해서 회원가입을 하고 , 데이터를 조회할 수 있어야한다.(이런것을 서로 의존관계가 있다고 한다.멤버 컨트롤러가 멤버서비스를 의존한다고 표현한다.) MemberController.java 생성 @Controller //이렇게 컨트롤러 어노테이션을 적어놓으면 스프링컨테이너가 생성되면서 멤버컨트롤러로서 해당 어노테이션을 가진 컨트롤러를 넣어놓는다. //그리고 스프링이 관리를 한다. public class MemberController { } @Controller 이렇게 컨트롤러 어노테이션을 적어놓으면 스프링컨테이너가 생성되면서 멤버컨트롤러로서 해당 .. 인프런/스프링 입문 2022. 11. 11. 5)회원 서비스 만들기(회원가입..등),테스트하기,static변수특징,생성자사용하기,인터페이스객체,의존성주입 회원서비스 만들기 service 패키지 생성후 MemberService.java를 생성 회원가입 메소드 만들기 MemberService.java에 회원가입 메소드를 만드려고 한다. 그전에 이름을 가지고 이미 같은이름을 가진 멤버가 있는지 체크하려고 한다 (중복검사) Optional result = memberRepository.findByName(member.getName()); result.ifPresent(m-> { throw new IllegalStateException("이미 존재하는 회원입니다."); }); 이런식으로 findbyname의 리턴값이 optinal이니까 변수에 저장해놓고 ifPresent 함수를 실행하여 진행 할 수 있다. ifPresent()는 optinal에 사용되며 안에는 람.. 인프런/스프링 입문 2022. 10. 29. 4)비즈니스 요구사항 정리,회원도메인,회원 리포지토리생성,테스트코드생성,테스트해보기 강의에서 진행하는 회원 서비스 개발 따라하기 데이터: 회원id, 이름 기능 : 회원 등록,조회 아직 데이터 저장소가 선정되지않았음(가상의 시나리오) 데이터 저장소가 선정되지않아서 멤버저장소는 인터페이스로 구현한다. 데이터저장소는 구현체를 메모리 구현체로 만들것임. 향후에 RDB든 뭐든 정해지면 바꿔낄것임 바꿀거기 때문에 인터페이스로 정의해두었다. 회원도메인과 리포지토리 만들기 멤버.java package hello.hellospring.domain; public class Member { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } publ.. 인프런/스프링 입문 2022. 10. 12. 3. 스프링 웹 개발 기초(정적컨텐츠,mvc와 템플릿엔진,API) 정적컨텐츠 방식 -> 저번에 했던 웰컴페이지처럼 서버에서 뭐하는거없이 html파일을 그냥 보여주는 방식 스프링부트는 resources/static에서 해당 html파일을 찾아서 보여준다. 다음과 같이 파일명을 뒤에 붙이니 해당 html 내용을 그대로 보여줬다. 정적컨텐츠 동작방식 1. 웹브라우저에서 톰캣으로 해당 url 전달 , 톰캣이 스프링에게 전달 , 스프링은 hello-static관련 컨트롤러를 찾아본다. 전 시간에 hello를 가지는 컨트롤러는 있었지만 hello-static이 맵핑된 컨트롤러는 존재하지않음 2. 존재하지않으므로 스프링은 resources안에있는 hello-static.html을 찾아서 가져온다. MVC와 템플릿 엔진 방식 -> mvc는 모델 뷰 컨트롤러 이고 템플릿 엔진은 htm.. 인프런/스프링 입문 2022. 10. 3. 2. View 환경설정, welcome page 만들기,컨트롤러 생성, 웰컴페이지가 보이는 동작방식 , 콘솔에서 실행방법 View 환경설정 Welcome Page 만들기 스프링부트는 resources/static/index.html 와 같이 resources/static 위치에 index.html파일을 넣어주면 해당 index.html을 웰컴페이지로 사용한다. 해당위치에 index.html 파일을 생성해주고 다음과 같은 코드를 넣고 Hello hello 다시서버를 실행해주면 이런 결과가 보인다. 타임리프 활용 , 컨트롤러 생성 controlloer라는 새로운 패키지를 생성하고 그안에 helloController라는 자바파일을 생성해준다. 컨트롤러는 @controller라는 어노테이션을 사용해야한다. model.addAttribute("data","hello!"); 해당 명령어는 모델에 데이터를 담을 때 사용된다. (MVC .. 인프런/스프링 입문 2022. 10. 3. 이전 1 2 다음