일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- SSR
- Anaconda
- address
- 파이콘
- Technical Writing
- 모바일웹스킨
- PID
- Machine Learning
- github
- terminate
- khaiii
- Kakao
- 비동기
- 코딩온라인
- 필사
- 서버사이드렌더링
- expression statement is not assignment or call html
- 자바파이썬
- Morphological analysis #Corpus
- 출처: 자바의 신 8장
- 플젝후체크
- 마크다운
- taskkill
- github markdown
- gitbash
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트v
- #스파르타코딩클럽후기 #내일배움캠프후기
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트
- 파이썬
- 클라이언트사이드렌더링
- Today
- Total
목록Java&Spring (23)
개발 일기
관리자 권한을 줄 때는, @Secured 와 hasRole 을 사용한다. 우선 Admin Controller 에 @Secured 어노테이션을 달아준다 ("ROLE_ADMIN")권한을 가진 사람만 접근할 수 있다는 뜻이다. @Secured("ROLE_ADMIN") @GetMapping("/adminposting") public AdminDto getAdminPosting() { return adminService.toAdminPosting(); } } Admin Controller 에 @Secured 를 하는 대신 Web Security Config 에 아래 코드를 넣어도 작동한다. .antMatchers("/adminposting").hasRole("ADMIN") .anyRequest().authenti..
for 문 for (초기치; 조건문; 증가치) import java.util.Scanner; //for 문 public class BJ2741 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i=1; i< n+1; i++) { System.out.println(i);} } } 점프 투 자바 04-4 for 문 for 문 내에서 if 와 else 활용해보자. “총 5명의 학생이 시험을 보았는데 시험점수가 60점이 넘으면 합격이고 그렇지 않으면 불합격이다. 합격인지 불합격인지에 대한 결과를 보여준다.” public static void main(String[]..
LocalStorage 에 'nickname'을 키값으로. User 저장소에는 잘 찍히는 데, 불러와지지 않는다. (2) 카카오 로그인 마지막에 JwtResponse 에 닉네임을 추가해야 한다. JwtResponse는 사용자에게 반환될 토큰을 담은 객체이다. Authentication kakaoUsernamePassword = new UsernamePasswordAuthenticationToken(username, password); Authentication authentication = authenticationManager.authenticate(kakaoUsernamePassword); SecurityContextHolder.getContext().setAuthentication(authentic..
리팩토링을 하면서, Controller 와 서비스를 분리하는 것이 중요 과제였다. Controller 1) 클라이언트의 요청 받음 2) 요청에 대한 처리는 서비스에게 전담 3) 클라이언트에게 응답. Service 사용자의 요구사항 처리 DB 정보가 필요하면 Repository에 전담 Repository -DB 관리 -DB CRUD 처리 왜 Controller/Service 구분하지? -중복되는 코드가 생기기 때문. -비즈니스 로직 코드가 컨트롤러에 구현되어 있는 경우 다른 컨트롤러의 핸들러 메소드에서 똑같은 로직 코드를 구현해야함. -> 중복 코드 발생/재사용정이 줄어듬. *아래 블로그에서 명료하게 정리해주셔서 참고하였다. 출처 https://velog.io/@sezeom/Controller-Servic..
제네릭 -컴파일 시 타입을 체크해주는 기능 (ClassCastException 형변환 에러 방지) -객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여줌 (코드도 간결해짐) 왼쪽 예제를 보면, get(0)이 object 타입이기에 형변환을 해야한다. 반면 오른쪽예제에서는 tvLIst가 형이기 때문에 형변환이 불필요하다. ArrayList 지네릭 클래스. 클래스 안에 object 타입이 있는 것들은 일반 클래스에서 Generic class 로 바뀌었다. 이전에는 다른 타입을 저장하면 체크를 못해줬는데, 제네릭스의 등장이후 이를 컴파일 에러로 잡을 수 있게 되었다. \ 클래서 옆에 가 들어가면, 지네릭 클래스다 라고 지정해줬기 때문에, (Integer)형변환을 생략할 수 있다. public class Ge..
인터페이스란? 인터페이스는 클라이언트 프로그램에 어떤 메서드/멤버를 제공하는지 미리 알려주는 명세, 약속의 역할을 한다. 다시 말해, 최종 구현된 클래스를 사용하는 클라이언트 코드와, 클라이언트에게 기능을 제공하는 코드 사이의 약속이다. 인터페이스를 잘 정의하는 것이 확장성 있는 프로그램을 설계하는 토대다. 인터페이스: 인터페이스를 구현한 클래스가 어떤 기능의 메서드를 제공하는지 (제공할지) 명시 클라이언트: 인터페이스에서 약속한 명세대로 구현한 클래스 생성 인터페이스의 특징 -인터페이스는 Abstract, final 과 함께 자바의 대표적인 규제다. -인터페이스는 대상이 되는 시스템을 제어할 때 사용한다 -인터페이스를 implement 할 때는, 메서드를 구현해줘야 한다. -구현 후에는 꼭 아래와 같이..
추상클래스의 특징 / 정의 -추상클래스는 반드시 상속을 받아야 한다. (다른 말로는 상속을 하기 위해 만든 클래스다) -추상클래스는 직접적으로 객체 인스턴스를 생성할 수 없다. -추상 클래스는 완전하지 않은 클래스이다. -부족하다는 뜻일 수도 있지만, 한편으로는 다르게 확장될 수 있는 가능성을 지닌다. 이 가능성 덕분에 좀 더 확장 가능하고 다양한 프로그램을 개발할 수 있다. 새로운 클래스를 작성하는 데 밑바탕이 되는, 설계로서의 틀을 갖추고 클래스를 작성하게 도와준다. -상속을 받은 추상 메서드는 반드시 구현을 해야한다. -추상 클래스는 항상 추상 메서드를 포함한다. 추상 메서드는 구현 코드가 없다. 구현코드가 없다는 것은 함수 몸체가 없다는 것이다. (몸체: {}를 포함한 내용. {}만으로 함수 몸체..
S3 업로드 테스트를 보는데, 처음에 설정을 못해서 build.gradle의 dependency 설정을 하는 데만 1시간을 다 썼다. 내가 잘못 하고 있는건가? 의심이 많이 들었는데, 튜터님께 여쭤보니 원래 그런것이라고 하셨다. 내가 쓰고 있는 라이브러리와 어디가 호환이 되는지 모르기 때문에, 해보고, 빼보면서 쓰는 것이 당연하다. 블로그에 돌아다니는 정보들도, 지금 내가 깔아놓은 설정들과 충돌할 수 있기 때문에 그대로 가져와도 안되는 경우도 많다. 블로그 + aws 의 튜토리얼 등을 적당히 조합해서 할 것! 에러케이스 (1) aws access key id 가 인식이 안된다고 뜸. yml 파일이 제대로 안불려진 듯함. (2) aws access를 얻고 난 이후에는, db에 이미지 url은 찍히지만, s..