컴파일러가 정적분석을 진행할 때 오류가 아니라고 마킹해주는 역할을 하고 있다.
따라서 어떤 경고를 제외시킬지 옵션을 줄 수 있음
JDK 1.5 버전부터 지원.
all : 모든 경고를 억제
boxing : boxing/unboxing 오퍼레이션과 관련된 경고를 억제
cast : 캐스트 오퍼레이션과 관련된 경고를 억제
dep-ann : 권장되지 않는 어노테이션과 관련된 경고를 억제
deprecation : 권장되지 않는 기능과 관련된 경고를 억제
fallthrough : switch 문에서 누락된 break 문과 관련된 경고를 억제
finally : 리턴되지 않는 마지막 블록과 관련된 경고를 억제
hiding : 변수를 숨기는 로컬과 관련된 경고를 억제
incomplete-switch : switch 문에서 누락된 항목과 관련된 경고를 억제(enum case)
javadoc : javadoc 경고와 관련된 경고를 억제
nls : 비nls 문자열 리터럴과 관련된 경고를 억제
null : 널(null) 분석과 관련된 경고를 억제
rawtypes : 원시 유형 사용법과 관련된 경고를 억제
resource : 닫기 가능 유형의 자원 사용에 관련된 경고 억제
restriction : 올바르지 않거나 금지된 참조 사용법과 관련된 경고를 억제
serial : 직렬화 가능 클래스에 대한 누락된 serialVersionUID 필드와 관련된 경고를 억제
static-access : 잘못된 정적 액세스와 관련된 경고를 억제
static-method : static으로 선언될 수 있는 메소드와 관련된 경고를 억제
super : 수퍼 호출을 사용하지 않는 메소드 겹쳐쓰기와 관련된 경고를 억제
synthetic-access : 내부 클래스로부터의 최적화되지 않은 액세스와 관련된 경고를 억제
sync-override : 동기화된 메소드를 오버라이드하는 경우 누락된 동기화로 인한 경고 억제
unchecked : 미확인 오퍼레이션과 관련된 경고를 억제
unqualified-field-access : 규정되지 않은 필드 액세스와 관련된 경고를 억제
unused : 사용하지 않은 코드 및 불필요한 코드와 관련된 경고를 억제
브라우저를 통해 request를 받지 않는다면 사용하지않다도 된다.
SPA(single page application)방식으로 개발된(REST)API서버는 이 기능을 disable 해도된다.
RESTAPI서버는 stateless하게 개발하기 때문에 사용자의 정보를 세션에 저장하지 않는다.
일반적으로 JWT같은 토큰을 사용하여 인증하기 때문에 해당토큰을 Cookie에 저장하지 않는다면 CSRF취약점에 대해서는 어느정도 안전하다고 말할 수 있다.
두 개체에서 JSON 객체를 사용하여 가볍고 자가수용적인 (self-contained) 방식으로 정보를 안전성 있게 전달해줍니다.
JWT 는 필요한 모든 정보를 자체적으로 지니고 있습니다. JWT 시스템에서 발급된 토큰은, 토큰에 대한 기본정보, 전달 할 정보 그리고 토큰이 검증됐다는것을 증명해주는 signature 를 포함하고있습니다.
spring security 설정파일에 .and() 이런식으로 되있어서 이게 뭘까 싶었다.
and()는 특정 Configurer 에 대한 옵션 구성을 완료 한 후 사용하는 매서드
and()는 builder()가 반환이 됩니다.
따라서 이걸로 서로 다른 configurer를연결해줄수 있습니다.
반환유형이 HttpSecurity면 and() 추가할 필요가 없다.
csrf().disable() : return type HttpSecurity
반환유형이 다를경우 and()로 이어줌
cors() : CorsConfigurer
formLogin() : FormLoginConfigurer
formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
...
- ORACLE : ROW_NUMBER() OVER (ORDER BY COLUMN) AS ROWNUM
- MSSQL : ROW_NUMBER() OVER (ORDER BY COLUMN) AS ROWNUM
- MYSQL : 지원 하지 않음, SQL 내 변수(@변수명)으로 해결
- ORACLE
SELECT COLUMN_A
,COLUMN_B
,ROW_NUMBER() OVER (ORDER BY COLUMN_C DESC) AS ROWNUM
FROM TABLE_A
- MSSQL
SELECT COLUMN_A
,COLUMN_B
,ROW_NUMBER() OVER (ORDER BY COLUMN_C DESC) AS ROWNUM
FROM TABLE_A
- MYSQL
SELECT COLUMN_A
,COLUMN_B
,@SEQ := @SEQ + 1 AS ROWNUM
FROM TABLE_A
,(SELECT @SEQ := 0) A
ORDER BY COLUMN_C DESC
mysql 8버전 이후부터는 사용가능
자바를 실행할 때, 실행되는 곳의 정보를 얻어오거나 운영체제의 정보가 필요할 때가 있습니다.
System.getProperty() 사용법은 간단합니다.
괄호 안에 주어진 특정 문자를 적어넣으면 그 값이 String 으로 출력됩니다.
ex) System.getProperty("user.dir")
검색어 | 뜻 |
---|---|
java.version | Java 버전 |
java.vendor | Java 공급자 |
java.vendor.url | Java 공급자 주소 |
java.home | Java를 설치한 디렉토리 |
java.class.version | Java 클래스 버전 |
java.class.path | Java 클래스 경로 |
java.ext.dir | 확장기능의 클래스 경로 |
os.name | 운영체제 이름 |
os.arch | 운영체제 아키텍처 |
os.version | 운영체제 버전 정보 |
file.separator | 파일 구분 문자 |
path.separator | 경로 구분 문자 |
line.separator | 행 구분 문자 |
user.name | 사용자 계정 |
user.home | 사용자 홈 디렉토리 |
user.dir | 현재 디렉토리 |