Spring-Boot/etc.
-
SpringBoot - DB 로그 찍기Spring-Boot/etc. 2022. 5. 11. 09:05
0. gradle 추가 implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' 1. application.yml 파일 수정 #MySQL spring: datasource: url: jdbc:log4jdbc:mysql://127.0.0.1:3306/boarddemo driverClassName : net.sf.log4jdbc.sql.jdbcapi.DriverSpy 2. log4jdbc.log4j2.properties 파일 추가 ( resource 밑 ) log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator log4jdbc.dump.sql.maxlinel..
-
SpringBoot - CORS 해결방안Spring-Boot/etc. 2022. 5. 9. 15:30
1. @CrossOrigin - 인증X @RestController public class memberRestController { @CrossOrigin("localhost:3000") @PostMapping("/joinMember") public void joinMember(@RequestBody memberVO mem) { } } 2. Security Filter 방식 - 시큐리티 필터에 등록 인증 CorsConfig @Configuration public class CorsConfig { @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();..
-
SpringBoot - JWT ( JSON WEB TOKEN ) - 코드편Spring-Boot/etc. 2022. 5. 9. 15:03
HS512 알고리즘을 사용할 것이기 때문에 secret key는 512bit, 즉 64byte 이상을 사용해야 합니다. 터미널에서 secret key를 base64로 인코딩하여 secret 항목에 채워넣습니다. $ echo ‘silvernine-tech-spring-boot-jwt-tutorial-secret-silvernine-tech-spring-boot-jwt-tutorial-secret’|base64 application.yml jwt: header: Authorization secret: 4oCYc2lsdmVybmluZS10ZWNoLXNwcmluZy1ib290LWp3dC10dXRvcmlhbC1zZWNyZXQtc2lsdmVybmluZS10ZWNoLXNwcmluZy1ib290LWp3dC10dXRvc..
-
SpringBoot - JWT ( JSON WEB TOKEN ) - 개념편Spring-Boot/etc. 2022. 5. 9. 11:04
통신 : OSI 7계층 응용계층 : 프로그램 - 데이터전달 프리젠테이션 : 암호화, 압축 세션계층 : 인증체크 트랜스포트 : TCP( 신뢰성O, ACK[응답] 에 따라 통신 ) / UDP( 신뢰성X, ACK 상관X ) 통신결정 네트워크 : IP 데이터링크 : WAN / LAN 물리 : 광케이블 ------전송-------> 물 데 네 트 세 프 응 보안 C ( Confidential ) : 기밀성 깨짐, 보안 노출X I ( Integrity ) : 무결성 깨짐 A ( Availability ) : 가용성 깨짐 1. 키 전달 문제 2. 데이터 출처 문제 RSA ( 암호화 ) Public Key : 공개키 / Private Key : 개인키 - 공개키로 잠구면 개인키로 열어볼 수 있고 ( 암호화 ) - 개인..
-
SpringBoot - Spring SecuritySpring-Boot/etc. 2022. 5. 6. 10:13
config - WebSecurityConfig.java @Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { // 패스워드 인코더 @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } @Override protected void configure(HttpSecurity http) throws Exception{ http .csrf().disable() // jwt토큰 방식을 쓰기에 필요한 설정 .authorizeRequests() // HttpServletRequest를 ..
-
SpringBoot - 스프링 빈의 순환 종속성 문제 (Circular Dependencies in Spring)Spring-Boot/etc. 2022. 5. 4. 18:42
@Component public class AComponent { @Autowired private BComponent bComponent; } @Component public class BComponent { @Autowired private AComponent aComponent; } 서로를 계속 참조한다 -> 서로 의존성을 가짐 -> 순환 종속성이 생김 해결 방안 1. 구조적으로 해결한다 -> 한 파일 내에서 두 자식 컴포넌트를 사용한 후 부모class에서 사용 2. yml파일에서 순환종속성을 무시 spring: main: allow-circular-references: true -> 2번 방법보단 1번 방법이 좋다. 구조를 잘 짜야한다. 참고자료 : https://hungrydiver.co.kr/..
-
SpringBoot - @ [ 어노테이션 ]Spring-Boot/etc. 2022. 5. 4. 09:29
어노테이션이란? 어노테이션은 JDK5부터 등장, 클래스나 메서드, 변수에 @을 사용하는 것 어노테이션을 사용하는 이유 어노테이션은 사전적 의미로 주석을 의미, 주석처럼 달아 특수한 의미 부여가 가능하며, 기능 주입이 가능 어노테이션을 사용하는 가장 큰 이유는 프로그램에게 추가 정보를 제공하는 메타 데이터를 위해서 사용 @Override 어노테이션의 기능 1. 자식 클래스에 여러 개의 메서드가 정의가 되어 있을 경우 : 해당 메소드가 부모 클래스에 있는 매서드를 Override했다는 것을 명시적으로 선언 public class AnnotationParent { public int annotationParentMethod(int num1, int num2) { retun num1+num2; } } publi..