IT (85) 썸네일형 리스트형 Filter 를 활용한 ACL 만들기 (feat. Spring) 1. 개요 업무를 하던중 컨트롤러 레이어에서 허용된 IP 를 체크하는 로직이 상당수 중복코드로 남아 있는것을 발견함 IP 체크를 통해 허용된 IP가 아니라면 Exception 을 던지고 있었음 허용되지 않은 IP가 접근하는것을 Exception이 아닌 403(forbidden)응답 또는 은닉화를 위해 404(Not Found) 응답을 돌려줘야 된다고 생각함 2. Before 2.1. Code 2.1.1. Controller @RequestMapping(value = "/api/test") public Map apiTest() { // 중복코드 if (!ipInfoService.checkAllowIps()) { throw new RuntimeException( "[" + appProjectName + " .. Spring Boot Resource 사용시 접두사(classpath, file 등)를 사용해야 하는 이유 결론부터 말하자면 특정 Resource 타입을 사용하도록 강제해야 한다면 접두사를 사용해야 한다. Resource는 java.net.URI를 추상화한 것이다. Resource를 구현한 구현체는 아래와 같이 많이 존재한다. 이러한 리소스 타입은 Resource.getResource(String location) 메서드에 location 문자열과 ApplicationContext 타입에 의해 결정이 된다. ApplicationContext를 구현한 ServletWebServerApplicationContext 상황일 때 Resource 타입은 ServletContextResource 타입이 된다. 문제는 SpringBoot 사용 시 context path에서 발생한다. ServletContextResourc.. @Autowired 필드주입 Spring 없이 mock 생성하여 테스트하기 테스트중 아래와 같은 Service 가 있을수 있다. @Service public class AService{ @Autowired BRepository bRepository; @Autowired CRepository cRepository; . . . @Autowired ZRepository zRepository; } 이 경우에 보통 Spring 을 구동하여 mock bean을 등록하여 테스트를 진행한다. 하지만 시간도 오래 걸리고 그렇기 때문에 리플렉션을 통해 mock bean을 생성하여 사용할 수 있다. import static org.mockito.Mockito.*; @Test public void ATest(){ AService aService = new AService(); BRepository .. 스택 계산기-(후위연산식을 통해 계산기를 만들어 보자!) 보호되어 있는 글입니다. 후위연산식을 이용한 스택 계산기-(중위에서 후위 변경 step.1) 보호되어 있는 글입니다. [한달 한권] 함께 자라기 오늘의 책 : 함께 자라기 링크 : 네이버 책 애자일 ? 함께 협업하는 방법과 자라는 방법을 통해 불확실한 환경에서 애자일을 완성해 나가는 방법을 알게 만든 책이다. 이 책을 읽지 전에는 나 또한 '애자일을 하는 방법이 뭘까?', '애자일을 하려면 필요한 도구는?' 등과 같은 생각을 했다 하지만 불확실한 환경을 위한 애자일에 완벽한 준비사항은 애초부터 없었던 것인것 같다. 학습과 협력을 통해 그러한 불확실에 대비하고 빠른 피드백을 전달 할 수 있는 애자일은, 어쩌면 많은 시도를 통해 스스로 만들어 나가야 하는 과정일 것이다. 책 속에서 애자일에 씨앗이라는 문구를 아래와 같이 말하고 있다. 고객에게 매일 가치를 전하라. 고객에게 진짜 고객은 누구인가 ? 매일 어떻게 점진적으로 가치를 전할 것인가? 어떻게 .. 다중 버전 jdk 설정 Bash Shell # ~/.bash_profile # 해당 부분 변경시 기본 버전 변경 java::init 1.8 function java::init() { local java_version java_version=$1 export JAVA_HOME=$(/usr/libexec/java_home -v $java_version) } 내가 생각하는 소통이란 개발자가 갖추어야 하는 덕목을 꼽아 보라고 한다면 엄청나게 많은 사람들이 각자 생각하고 있는 덕목을 말할 것이다. 그중에 무조건, 그리고 당연하게 들어 있을것이라고 생각하는 덕목은 바로 '소통'이다. 심지어 자신이 혼자서 어플리케이션을 개발해서 이익을 창출해 나가는 개발자들도 소통을 이라는 것을 해야한다. 회사에 몸담고 있고, 월급을 받으면서 개발을 해야하는 우리에게 그런 소통이라는 덕목은 중요하다고 말하면 입만 아픈 소리다. 그렇기 때문에 개발자들은 소통이라는 덕목을 갖추어야 하고 항상 생각하고 업무를 진행해야한다. 하지만 이런 입에 발린 말은 누구나 할 수 있다. 지금 당장 유튜브만 찾아 봐도 누구나 하는 말이다. 확실히 소통에 대해 조금은 추상적인 내용이 아닌 구체화된 내용이 필요하다고 느낀다. 난.. ORACLE 전체 테이블 검색 전체 테이블 검색 현재 사용자가 엑세스 할 수 있는 관계형 테이블 (ALL_TABLES) SELECT * FROM ALL_TABLES WHERE TABLE_NAME = '테이블명'; 데이터베이스의 모든 관계형 테이블 (DBA_TABLES ) SELECT * FROM DBA_TABLES WHERE TABLE_NAME = '테이블명'; 현재 사용자가 소유한 관계형 테이블 (USER_TABLES ) SELECT * FROM USER_TABLES WHERE TABLE_NAME = '테이블명'; 관련 속성 OWNER : Owner of the table TABLE_NAME : Name of the table TABLESPACE_NAME : Name of the table.. IT 기초 공부 (추가중) IT 기초 자바 기초 자바 메모리 영역 메서드 영역 : static 변수, 전역변수, class정보 스택 : 지역변수, 함수(메서드), LIFO 방식 힙 : 동적할당 객체 gc가 관리함 메모리 상수풀 영역 : 힙영역에 생성, 프록세스 종료까지 계속 유지, 작성한 상수값을 가지고 있음 인터페이스 사용 이유 인터페이스 작성된 책임은 항상 구현되어 있다는 강제성을 가짐 -> 이를 통해 다형성 및 기타 유연한 작업이 가능해짐 Mark 역할을 하여 특정 기능을 표시해줌(Serializable 등) JDBC란? 자바에서 데이터베이스 접속할 수 있도록 하는 자바 api 직렬화란? 스트림을 통해 입출력이 가능할 수 있도록 전달할 수 있는 구조로 변경하는 것 serialVersionUID 선언 이유 직렬화/역직렬화 때 .. 이전 1 ··· 3 4 5 6 7 8 9 다음