728x90

springboot 49

[Spring] 스프링 시큐리티 (1)

7.3 스프링 시큐리티 - 인증, 인가 기능의 공통 기반 제공 - 웹앱에서 인증, 인가를 구현하기 위한 각종 필터 클래스 제공 - Bean 정의 파일이나 프로퍼티 파일, 데이터베이스, LDAP 등, 여러 리소스로부터 인증, 인가 정보 취득 가능 - HTTP BASIC 인증이나 화면에서의 폼 인증 등, 웹앱에서 일반적으로 선택되는 인증 지원 - 메소드 호출에 대한 액세스 제어에 AOP 사용 가능 - 시큐리티 공격에 대한 방어 기능을 제공(CSRF 대책, Session Fixation 대책 등) 7.3.1 스프링 시큐리티의 설정 파일 - Bean 정의 파일(XML) - JavaConfig 파일 @EnableWebSecurity protected class SecurityConfig extends WebSec..

[Spring] 스프링 AOP (2)

@Configuration @EnableAspectAutoProxy public class AppConfig { @Bean public ProductServiceImpl productService() { return new ProductServiceImpl(); } @Bean public ProductDaoImpl productDao() { return new ProductDaoImpl(); } @Bean public MyFirstAspect myFirstAspect() { return new MyFirstAspect(); } } 스프링 코어 중 다른 하나인 DIxAOP 컨테이너의 AOP에 대해 알아보기 3.2.2 어노테이션으로 어드바이스 만들기 Before 어드바이스, After 어드바이스 - 어노테이..

[Spring] 스프링 AOP (1)

스프링 코어 중 다른 하나인 DIxAOP 컨테이너의 AOP에 대해 알아보기 - DI 컨테이너란 오브젝트 사이에 밀접한 의존 관계를 가지지 않게 하고, 인터페이스에 의한 약한 결합을 쉽게 만들어 소프트웨어의 컴포넌트화를 촉진하며, 오브젝트의 생명 주기를 관리할 수 있게 하는 것 - DI 컨테이너만으로는 온전한 아키텍처를 개발할 수 없음 - AOP가 있으면 로깅이나 트랜잭션 등의 처리를 따로 관리할 수 있게 구현하는 기술 3.1 AOP란 - AOP란 업무 등 특정 책임이 있는 클래스 같이 본질적이지 않은 처리들을 밖으로 꺼내는 기술 3.1.1 AOP 용어 애스펙트(Aspect) - 횡단 관심사의 동장과 그 횡단 관심사를 적용하는 소스 코드상의 포인트를 모은 것 어드바이스(Advice) - 조인 포인트에서 실..

[Spring] 스프링 DI (2)

스프링 코어 중 하나인 DI에 대한 개요, 특징, 이용 방법 및 DI를 어떻게 이용할 것인가에 대한 설명 2.5 JavaConfig를 이용한 DI - XML파일 작성 대신에 Java 코드를 작성한다. 2.5.1 예제를 이용한 JavaConfig https://devhooney.tistory.com/9 스프링 DI (1) 스프링 코어 중 하나인 DI에 대한 개요, 특징, 이용 방법 및 DI를 어떻게 이용할 것인가에 대한 설명 2.1 DI란 - DI는 '의존 관계의 주입'이다. - 오브젝트 사이의 의존 관계를 만드는 것. -> 오브젝트 devhooney.tistory.com - 이 글에서 작성했던 ProductService, ProductDao 등의 샘플을 JavaConfig로 수정한다. - AppConfi..

[Spring] 스프링 DI (1)

스프링 코어 중 하나인 DI에 대한 개요, 특징, 이용 방법 및 DI를 어떻게 이용할 것인가에 대한 설명 2.1 DI란 - DI는 '의존 관계의 주입'이다. - 오브젝트 사이의 의존 관계를 만드는 것. -> 오브젝트의 인스턴스 변수에 그 오브젝트가 이용할 오브젝트를 설정한다는 의미. - 학술적으로 어떤 오브젝트가 이용할 오브젝트를 주입 혹은 인젝션(인스턴스 변수에 설정)한다는 의미. - DI를 구현하는 컨테이너는 클래스의 인스턴스화 등의 생명 주기 관리 기능이 있는 경우가 많다. 2.2 DI를 사용할 곳 - 보통 컨트롤러, 서비스, DAO의 의존 관계를 구축할 때 2.3 어노테이션을 이용한 DI 2.3.1 기본 - @Autowired와 @Component - ProductService 인터페이스 publ..

[Spring] @PutMapping, @DeleteMapping 403 Forbidden 에러

윈도우 환경인 로컬에서는 잘되던 @DeleteMapping이 리눅스 환경에 배포 후 안된다. - 환경설정 문제인거 같아서 관련 내용으로 구글링 - SecurityConfig에 아래 내용을 추가해봤지만 효과가 없었다. .antMatchers(HttpMethod.DELETE,"/**") - WebConfig를 수정하니 효과가 있었다. @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(("/**")) .allowedOrigins("*") .allowedMethods( HttpMethod.GET.name(), HttpMethod.HEAD.name(), HttpMethod.POST.name(), HttpMethod...

[Javascript] 웹으로 PDF 띄우기

회사 요구사항으로 PDF를 뛰워야했다. - 이전에 Java로 띄웠었는데, 간편하게 Javascript로 가능하다. window.open('서버파일경로+파일명.확장자'); - Java로 하면 FileInputStream fis = null; BufferedOutputStream bos = null; try { String pdfFileName = "경로+파일명.확장자"; File pdfFile = new File(pdfFileName); // 클라이언트 브라우져에서 바로 보는 방법(헤더 변경) response.setContentType("application/pdf"); // 이 구문이 있으면 [다운로드], 이 구문이 없다면 바로 target 지정된 곳에서 띄울 수 있다. //response.addHead..

[Spring] 파일 업로드 시 파일명 변경하기

파일 업로드 시 파일명 변경이 필요함- 개발하는데, 파일명을 강제로 바꿔줘야 하는 일이 발생했다.- Javascript의 input:file에서는 변경이 불가능하다.- Java에서 파일을 받아 파일명을 변경했다.@PostMapping("/save")@ResponseBodypublic long save(@RequestParam("imgCoverFile") MultipartFile file) { File targetFile = new File("/path/path2/" + newFileName); InputStream fileStream = file.getInputStream(); FileUtils.copyInputStreamToFile(fileStream, targetFile); }   중간광고 ..

[Spring] @PutMapping, @DeleteMapping 사용하기

RestAPI규칙을 지켜보고자 @DeleteMapping을 사용해보았다. - 화면에서는 405에러가 나고, 서버쪽을 봤더니 Request method 'DELETE' not supported 가 찍혀있었다. 구글링 결과 SpringBoot 2.2 이상 버전에서는 설정을 따로 해줘야한다고 한다. - yml파일에 아래코드를 작성했다. spring: mvc: hiddenmethod: filter: enabled: true 재시작 후 작성한 API가 정상 작동하는 것을 확인할 수 있다. 추가 - Ajax로 요청 시 Delete, Get, Put은 body에 파라미터가 들어가지 않으므로, URL에 추가해줌으로써 파라미터를 서버쪽으로 넘겨줘야 한다. const url = "/xxx/yyy/" + String(dat..

728x90