분류 전체보기318 No mactching variant of ~~ 해결방법 file -> project structure file -> settings 문제해결 2022. 12. 1. 2)좋은 객체 지향설계의 5가지 원칙(SOLID), 객체지향 설계와 스프링 SRP (단일 책임 원칙 , Single responsibility principle) 하나의 책임이라는게 정하기 모호하다. 하나의 책임의 중요한 기준은 변경이다. 변경이 있을때 파급효과가 적으면 단일 책임 원칙을 잘 따른것이라고 한다. ex)만약 ui를 고치려고하는데 sql문부터 시작해서 다른 변경이 많이 생길때 -> 단일 책임 원칙을 잘 따르지 못했다. OCP 개방-폐쇄 원칙 가장중요한 원칙 리포지토리를 메모리리포지토리,jpa리포지토리 등등으로 바꿔도 기존의 코드는 바꾸지않았던점, (새로 리포지토리 구현체만 생성했을뿐 기존 코드는 건들지않음.) 이전 게시글에서 운전자 예시중 자동차가 바뀌어도 운전자는 운전이 가능했다는점 이런 다형성의 예시로 설명이 가능하다. 메모리리포지토리에서 jdbc리포지토리로 바.. 인프런/스프링핵심원리(기본) 2022. 12. 1. 1)스프링이란?, 좋은 객체 지향 프로그래밍? 스프링 생태계 스프링은 어떤 특정한 하나가 아니라 여러가지 기술들의 모음이라고 볼수 있다. 먼저 스프링의 핵심인 스프링 프레임워크 여러 스프링 기술들을 편리하게 사용할 수 있게끔해주는 스프링부트 그리고 나머지 선택사항들 https://moolgogiheart.tistory.com/87 프레임워크(Framework)란? 개념, 장단점, 종류 프레임워크라는 개념을 접하기 전에 '부트스트랩(Bootstrap)'이란 용어를 먼저 알게 되었습니다. 웹 프로젝트를 개발하기 위한 좋은 툴이라는 것을 듣게 되었죠.그래서 부트스트랩이 무엇인지 자 moolgogiheart.tistory.com 스프링 프레임워크 스프링프레임워크만 쓰는게 아니고 스프링 프레임워크를 편리하게 사용할 수 있는 스프링 부트 라는것을 통해서 스프링.. 인프런/스프링핵심원리(기본) 2022. 11. 30. 끝) 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. 인텔리제이 빌드 실패/Could not create connection to database server. Attempted reconnect 3 times. Giving up. 서버에 있는 스프링부트가 빌드가 안되는 상황 (로컬에서는 됨) ec2에서 rds의 엔드포인트를 이용해서 접속도 안되었다. mysql -h 엔드포인트 -u rds마스터사용자 -p 하고 패스워드를 입력해도 아무런 반응이 없었다. ec2에서 rds로 가는 접근 자체가 안되었던것 하지만 rds의 인바운드 규칙에서 ec2의 보안그룹이 추가되어있었다. 문제는 ec2의 아웃바운드 설정이 되어있지않았던것 ec2의 아웃바운드 설정에서 모든 트래픽이 나갈수있게 규칙을 추가해줬더니 ec2에서 mysql을 이용해서 rds에 접속도 가능하고 17:35:08.120 INFO [File:HikariDataSource.java] [Func:getConnection] [Line:110] [Message:HikariPool-1 - St.. 문제해결 2022. 11. 6. 이전 1 ··· 21 22 23 24 25 26 27 다음