TIL
103
BlogTILThink
2022 2/4 중간점검
2022년 2분기 개인 스터디 중간 정리 ✔️ Tomcat 자바 고양이 Tomcat 이야기 ✔️ JPA 김영한 Generics Effective Java 드디어 이 책이 눈에 들어온다. 여기서 파생되는 키워드들 파악 할 것. Concurrency 뭘 하고 싶어도 이게 전제가 안되니 아무것도 이해 할 수 없음. 기본서 이상의 도움이 필요함. 기차책 Spring Security, Spring WebFlux, R2DBC 프로젝트 고도화 Real MySQL 같이 스터디 유행하는 책 살짝 보니 DBMS 종특에 대해서 많이 공부하는 것 같음
Java EcoTILJava programming
Java; Generic Methods
용법 : <T, R> R method(T t) 제네릭 메소드는 매개 타입과 리턴 타입으로 타립 파라미터를 갖는 메소드를 말한다. 제네릭 메소드를 선언하는 방법은 리턴 타입 앞에 <> 기호를 푸가하고 타립 파라미터를 기술한 다음, 리턴 타입과 매개 타입으로 타입 파라미터를 사용하면 된다. 제네릭 메소드는 두 가지 방식으로 호출 할 수 있다.
Java EcoTILSpring Framework
Spring Argument resolver
어노테이션 기반의 컨트롤러, @RequestMapping을 처리하는 HandlerAdapter. 어노테이션 기반의 컨트롤러는 다양한 파라미터를 사용할 수 있다. (HttpServletRequest, Model, @RequestParam, @ModelAttribute, @RequestBody) 이것을 처리할 수 있는 것은 ArgumentResolver기반에서 작동하기 때문이다. 원하는 ArgumentResolver를 만들수도 있다. 컨트롤러의 반환 값을 변환 (ModelAndView, ResponseBody, HttpEntity..)
Java EcoTILSpring Framework
JdbcTemplate의 SimpleJdbcInsert Bean 등록에 관하여
Reference 일단 오류와 상관없이.. SimpleJdbcInsert를 빈으로 만드는건 뭔가 이상한듯 저게 저 Repository에서만 쓸텐데.. 저걸 빈으로 만들어서 얻는 이점이 없음 JDBC 드라이버에서 제공해주는 DB 메타데이터를 사용해서 insert 쿼리 정보로 사용한다던데 왠지 빈으로 등록 시점에 JDBC 연결이 완료되지 않았을수도 있겠다 여튼, Entity 객체에서 리플렉션으로 '타입'정보를 꺼내쓴다면 애초에 dataSource같은게 필요없겠지 (순수 Java 리플렉션만으로 될테니) 근데 DataSource를 요구한다
Java EcoTILSpring Framework
세션을 사용하기 위한 Filter와 Interceptor
세션 생성을 자동으로 해주는 객체 기본 사용법 쿠키를 지원하는지 안하는지 서버는 모른다. 그래서 주소에 JSESSIONID를 세션 생성할때 내려 보내는데 이것을 모든 컨트롤러에서 다 파싱을 해야하니 불편하다. 대게는 쿠키지원을 하니까 tracking-modes를 cookie로 변경하면 주소에 JSESSIONID가 사라진다. Filter : 서블릿 Interceptor : 스프링 만약 로그인 여부 체크를 컨트롤러마다 해야 한다면 번거롭다. 그래서 공통 관심사를 처리하는 AOP를 활용할 수도 있지만, 예를들어 특정URL에 대한 처리와
Java EcoTILSpring Framework
JDBC의 Prepared Statement
NamedParameterJdbcTemplate query()) 가장 정확한 사용법 일반 JdbcTemplate은 SQL을 실행할때 Prepared Statement 라는게 있는데, 쌩 SQL을 사용하는게 아니라 SELECT FROM user WHERE id = ? 이런식으로 일정 형식문자열로 SQL을 준비하는 것이다. 저걸 Prepared Statement 라고 부른다. 그러면, 저 쿼리를 DB가 받으면 무슨일을 하냐면. SQL을 파싱하여 대기 상태로 놓는다. → 만약 기존에 동일한 SQL쿼리가 있었다면 그 쿼리캐시를 재사용해서
Java EcoTILJava programming
Java; Optional
Optional 개체 를 만드는 방법에는 여러 가지가 있습니다. 빈 Optional 객체 를 생성하려면 empty() 정적 메서드 를 사용하기만 하면 됩니다 . isPresent() 메서드를 사용 하여 Optional 객체 내부에 값이 있는지 확인했습니다 . 값은 null 이 아닌 값으로 Optional 을 만든 경우에만 존재 합니다. 다음 섹션에서 isPresent() 메서드를 살펴보겠습니다 . 또한 Java 11부터 isEmpty() 메서드로 반대 작업을 수행할 수 있습니다 . 다른 예시를 들어보자 이 코드 대신 아래의 코드로
EngineeringTILCo-work
git flow의 실제 사용
main이나 develop등 공용 브랜치에 커밋을 하지 않는다 → feature 브랜치로 따로 따서 작업한다. git checkout -b "feature/NUM" 공용 브랜치를 자주자주 pull 받아 브랜치를 최신으로 유지한다 (예를들어 develop) 공용 브랜치는 upstream으로 지정한다 git remote add upstream [URL] git pull upstream [공용브랜치] git push origin