JAVA 17

스프링 시큐리티

1. authentication filter의 역할을 대신하자 2. authorization filter의 역할을 대신하자 Model 받으면 req scope에 넣어놓고 가져감 - model attribute가 됨 인증인가를 servlet 필터와 aop를 기반함 보안 추가하기위해 고정되어있는 HM, HA, VR를 바꾸면 안 됨 - decorating filter pattern을 쓰자. 필터를 기반으로 한다. 1. optional 2. 보안 처리에 순서가 존재 AOP 1. annotation 기반의 선언적 프로그래밍. 어노테이션만 잘 쓰면 알아서 인가 처리해준다. -------- 패키지 컨씨컨브 - pom.xml artifactid - web.xml - 네비게이터 뷰 .settings- common.com..

Spring Framework 에서 Quartz 이용하여 파라미터 있는 스케쥴러 구현

해당 게시글은 Spring Framework 4.3.29 Release 버전을 사용하고 있습니다. Spring 의 @Scheduled 어노테이션을 사용하여 스케줄링을 하게 되면 No args 메서드, 즉 파라미터가 없는 메서드만 배치잡 실행이 가능하다. 왜냐면 어노테이션을 사용해 배치잡을 돌릴 경우 따로 command가 없는 POJO형태이기 때문이다. 그렇기 때문에 parameter가 있는 스케쥴러를 사용하기 위해선 Quartz 프레임워크를 일단 설치한다. Spring task 상속받아 써야한다. JobDetailFactoryBean을 써서 파라미터 값을 미리 넣을 수 있음.

MultipartFile 객체의 함정

@ContextConfiguration : 웹 서버를 돌리지않고 webApp 구현체를 만들어주는 역할 @WebAppConfig 붙어야 웹앱 됨. @Transactional. Advisor가 테스트 케이스에 위빙됨, 자동커밋됨 @ControllerAdvice 모든 컨트롤러를 대상으로 weaving된다. 컨트롤러가 동작할 땐 언제나 얘가 계속 조회된다. multipartfile: 비어있는 멀티파트 걸러지지않음. 첨부파일 추가하지 않아도 채워져버림. => 커맨드오브젝트의 책임은 핸들러어댑터가 진다. 데이터바인드 설정만 바꿔주면 비어있는 파트 해결 가능함. BUT 게시판에서 3개의 첨부파일이 1개의 동일한 input 태그를 쓰고있어서 데이터바인드가 동작하지 못하고 있음. -> 다른 방법을 찾아야함. @Contr..

추상 클래스로 view 만들기, properties 파일 사용해 폴더 위치 지정하기

jsp를 사용하는 이유가 '응답데이터를 html로 내보내기위해'인데 이 다운로드컨트롤러는 jsp를 사용할 이유가 딱히 없음. 그러니 MVC패턴에 맞도록 @RequestMapping("/board/download.do") public String download( @RequestParam(name="what", required=true) int att_no, Model model) throws IOException, ServletException{ AttatchVO attatch = service.download(att_no); model.addAttribute("attatch", attatch); return "downloadView"; ..

알바 관리 메이븐 프로젝트에 Spring 적용하기

pom.xml 수정 web.xml contextParam filter, Listener 추가 frontController -> appServlet으로 대체 WEB-INF 내에 spring폴더 만들기 (spring의 웹 리소스들 만들기) spring-appServlet 폴더에 Spring configuration xml 파일 만들기( 파일명: servlet-context.xml) namespaces 추가 (c, p, context, beans, mvc 등) namespace를 mvc를 기본설정으로 하고 beans 에서 beans:beans로 바꾼다 (optional) context:component scan 추가 후 controller, controllerAdvice 만 include (mvc:anno하거..

스프링 프레임워크 AOP

OP: Oriented Programming 프로그래밍 방법론은 중복을 해결하기 위해 점점 발전해왔다. AOP(Aspect Oriented Programming) : 관심사의 분리! 개발자가 각자 관심사에만 따라서 개발. 핵심관심사(Core Concern)는 타겟으로, 부가 관심사(Cross-cutting Concern)는 advice로 만든뒤 타겟, 어드바이스를 pointcut을 기준으로 걸러낸다음 joinpoint에서 weave하는 것. 부가 관심사: 여러 모듈이 공통적으로 거쳐야하는 작업 (예: 로그, 인증, 보안, 트랜잭션 관리) 장점: OOP에서도 해결되지 않은 중복을 해결 가능 업무 로직이 실행될 때 (-> core concern, target) 언제, 어떤 파라미터로, 얼마만큼의 소요시간이 ..

스프링 Spring 프레임워크 jUnit과 연동하기

junit으로 테스트할 땐 서버를 실행되지 않는다. 하지만 dao를 주입받아 쓰려면 컨테이너객체가 생성되어야함 => 서버를 돌리지 않은 상태에서 컨테이너 객체를 생성하게 하는 어노테이션: @ContextConfiguration 이때 형성되는 컨테이너: 애플리케이션 context. 테스트할 dao가 웹 어플리케이션 컨텍스트의 하위 객체가 되어야함. @WebApplicationConfiguration + test할때 자동 롤백되어야함 . => AOP 적용해 @Transactional을 넣어주자. 컨트롤러는 request가 있어야함. Mock 객체를 사용하면 Mock req, Mock resp 만들 수 있음. =>Spring의 MVC test module을 사용하면 됨 import static org.spri..

자바 Spring 에서 serviceImpl NullPointerException 해결하기 (리스너 관련)

해당 코드는 serviceImpl의 생성자 안에 있고, serviceImpl은 상위 컨텍스트에 생성됨. 그러면 SampleListener보다 먼저 생성돼서 NullPointer 뜸 생성자 안에 있던 코드를 init() 메서드로 만들고, postConstruct 어노테이션을 사용해 생성 이후에 실행되도록 한다. 그 과정에서 SampleListener대신 자기 자신을 context로 참조할 수 있다. 그리고 그 context는 init()보다 먼저 DI되기 때문에 SampleListener가 없이 사용이 가능하다. SampleListener 는 ServletContext를 상속받은 리스너로서, 접속 유저 정보를 저장해놓는 작업을 수행한다.

JAVA stream 스트림

스트림의 장점, 사용 목적 1. 데이터 소스를 추상화 데이터 소스가 뭐든 같은 방식으로 다룰 수 있다. 컬렉션의 경우 List를 정렬할때는 Collections.sort(), 배열을 정렬할 땐 Arrays.sort()를 써 같은 기능의 메서드들이 중복 정의돼있었음. 2. 코드의 재사용성이 높아짐 3. 배열이나 컬렉션뿐 아니라 파일에 저장된 데이터도 모두 같은 방식으로 다룰 수 있음

JAVA/개념 2020.08.26