목록웹 (104)
개발일기장
영화 상영 시간표 사용해서 뭔가 만들어보고 싶은게 생겼었음 영화 정보라 던가 meta정보는 open api가 있는데 상영 스케쥴에 관한거는 내가 못 찾은건지 없었던거같음 그래서 다른사람들 정보를 찾아보니깐 다들 그냥 상영관(시지븨, 메박, 롯머)에서 크롤링 하더라거 https://kobis.or.kr/kobis/business/mast/thea/findTheaterSchedule.do KOFIC 영화관 입장권 통합전산망 :: 상영스케줄 kobis.or.kr 이렇게 이쁘게 나와있는게 있었음.. 문제는 API로 안해주고 크롤링을 해야한다는 점임 그리고 url 쿼리로 값을 뽑을 수 없고 동적으로 클릭 하나씩 해야한다는점 여기서 광역 선택 기초 선택 상영관 선택 이렇게 3번 눌러야 동작을 함 클릭 하고 바로 나..
일반 java proxy 말고 CGLIB에서 제공하는 proxy사용법 1. MethodInterceptor를 구현 methodProxy 객체가 있는것 말고는 여기까지는 비슷함 그리고 method.invoke보다 저게 더 빠르다고 하는데 몰루겠슴. @Slf4j public class TimeMethodInterceptor implements MethodInterceptor { private final Object target; public TimeMethodInterceptor(Object target) { this.target = target; } @Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy ..
Proxy 사용법. 1. InvocationHandler를 구현한 객체를 만듬 생성자에 실제 method를 수행할 객체를 넣어줘야함.. 그리고 다른것도 넣어도 될듯..? args에는 method를 호출 했을 때 넣어주는 인자값들. @Slf4j public class TimeInvocationHandler implements InvocationHandler { private final Object target; public TimeInvocationHandler(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { log..
일단 class를 이렇게 만들어 둠 static class Hello{ private Integer iValue = 10; public String sValue = "hello"; public String callA(String args){ log.info("call A"); return "A "+args; } public String callB(String args){ log.info("call B"); return "B"; } } 1. Class 정보 호출 // Class 정보 획득 Class classHello = Class.forName("hello.proxy.jdkdynamic.ReflectionTest$Hello"); // 내부에 있는 경우 $ 이렇게 하면 해당 파일에 위치한 class의 me..
Spring boot를 시작할 때 모든 직접 추가한 모든 Bean을 확인하고 검사하는 로직이 필요할거 같음.. https://tlqckd0.tistory.com/94 Spring 공부 02. 스프링 컨테이너 https://tlqckd0.tistory.com/93 Spring 공부 01. Configuration, Bean import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; 이거 사용해서 Config 를 등록 할 수 있다. ApplicationContext a tlqckd0.tistory.com 그래서 Spring 을 시작하고 나서 바로 실행되게 하는 Com..
이전에 Scope에 Singleton과 prototype에 대해서 했었음 Singleton : Default값임 한번 생성되면 끝까지 스프링 컨테이너에서 하나의 객채로 유지됨 prototype : 생성될때 스프링이 주입만 해주고 끝. 1. request 이거는 HTTP 요청이 들어와서 나갈 때 까지 하나의 객체로 유지되는 Scope임 @Scope(value = "request") @Component public class MyLogger { ... } 2. Provider @RestController @RequiredArgsConstructor public class LogDemoController { ... private final MyLogger myLogger; ... } 그런대 이렇게 개발하고 S..
Spring은 Bean을 관리하면서 singleton으로 하는데 어떤 요청에도 처음 생성했던, 같은 인스턴스 객체를 반환함 그래서 Spring Container가 객체생성, 주입, Bean초기화 ~~ Bean 소멸, Spring Container 종료 될때까지 관리를 해줌 그리고 기본적으로 Spring은 singleton으로 돌아감.. @Scope("singleton") 이걸로 선언해주면 된다고 하는데 Bean의 Default값임 @Test void singletonBeanFind(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SingletonBean.class); SingletonBean singleto..
1. Spring Bean의 생성 ~ 소멸 1. Spring Bean 은 객체 생성 이후 의존관계를 주입함. 2. 주입이 다 끝나고 나서야 필요한 데이터를 사용 할 수 있음 3. 초기화? 이미 내부에 주입을 해서 setting이 완료된 상태임 4. Bean의 시작, 종료 시점에 callback을 줌 5. 컨테이너 생성 -> 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸 콜백 -> 스프링 종료 public class NetworkClient { private String url; public NetworkClient(){ System.out.println("생성자 호출, url = " + url); call("초기화 연결 메시지"); } public void setUrl(String ..