WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(((HttpServletRequest) request).getSession().getServletContext());

UserDAO userDao = (UserDAO)wac.getBean("userDaoName");

빈객체 가져오기이긴한데, DAO 쓰는 용도가 되었다.

상용에서 UTIL관련 파일을 수정해야 하는데 일반 JAVA파일이라 애먹어서 찾아보니 다음과 같은 방법이 있다.

 

request까지 날려줘야 해서 수정을 좀 해야 하지만 모든 코드를 수정하는 것보단 request추가가 그나마 해결책인거같다.

 

 

 

출처?: 특정 JAVA , JSP 에서 Bean 객체 가져오기 | spring (tistory.com)

블로그 이미지

LunaStratos

Stratosphere Stream

댓글을 달아 주세요

실무에서 트랜잭션을 써야 할 일이 있었는데 문제는 finally가 붙으면 Transaction이 동작 하지 않는 점이 있었다.

fanally에서 msg를 return하는 형태였는데 불가능해서 찾아보니 Exception에 msg를 넣으면 될 문제였다.

String msg = x + "값에서 에러가 발생했습니다.";
throw new Exception(msg);

Exception을 발생시키는 건 다들 알테고, 거기다가 msg를 넣는다.

 e.printStackTrace();
 Map <String, Object> result = new HashMap<>();
 result.put("flag" , "N");
 result.put("msg", e.getMessage());
 return new ResponseEntity<>(result , HttpStatus.OK);

컨트롤러에서 Map에 값을 넣고 return 해주면 끝. 

 

블로그 이미지

LunaStratos

Stratosphere Stream

댓글을 달아 주세요

@Trasaction(rollbackFor = {Exception.class}

을 써주면 된다.

 

catch

 

자세한 설명은 : bbchu.tistory.com/85 참조

 

참고로 Exception을 여러개 지정할수도 있다

@Transactional(rollbackFor = {Exception.class, BadSqlGrammarException.class})

Exception의 하위 항목에 대해서는 아래의 사진 참조

 

블로그 이미지

LunaStratos

Stratosphere Stream

댓글을 달아 주세요

 

ObjectMapper의 readValue 이용 시 모르는 value 무시하는 방법

@JsonIgnoreProperties(ignoreUnknown = true)
public class NAME implements Serializable {

    private long value1;
    private long value2;
    private long value3;

VO 쪽에 @JsonIgnoreProperties(ignoreUnknown = true) 를 써준다.

 

 

대소문자 구분 안하게 하기

 

ObjectMapper는 대소문자를 구분해서 아래의 에러가 났다. 

 

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:Unrecognized field "변수명"  not marked as ignorable 

 

이래놓고 변수명 상태가 로그로 나오는데...

 

new ObjectMapper().configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

아래와 같이 사용하면 된다.

MapperFeature는 com.fasterxml.jackson.databind.MapperFeature; 를 사용한다. 임의로 만든게 아니다.

 

사용예

 

new ObjectMapper().configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIEStrue).readValue(value, VO.class)

 

 

블로그 이미지

LunaStratos

Stratosphere Stream

댓글을 달아 주세요

ArrayList로 동작하는 고급 레스토랑 예약 시스템. 

 

 - ArrayList에 VO를 넣는 연습용로직 

 - 잡다한 폴더구조를 없에서 초보자들이 처음 해매는것을 방지

 - Try catch를 넣어서 이런 형태로 동작한다는 것을 넣었습니다.

 - flag로 false시 종료. 

 - For문의 경우 foreach와 for문 2가지 형태로 구현. 

 - 향후 contains나 indexOf를 넣어서 검색기능 추가예정. 

 

-> https://github.com/lunaStratos/educationJava

블로그 이미지

LunaStratos

Stratosphere Stream

댓글을 달아 주세요


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  Date date = new Date();
    long dateLongTime = date.getTime();
    //Date함수를 사용한 long time 구하기
    System.out.println(dateLongTime);
 
    //System을 사용한 long time 구하기
    long dateLongTime2 = System.currentTimeMillis();
    System.out.println(dateLongTime2);
 
    //Calander함수를 이용한
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",Locale.KOREA);
    // 날자를 set 하는 방법 (달은 0에서 시작한다)
    cal.set(2000,0,1);
    //SimpleDateFormat을 사용한 날짜 String
    System.out.println("현재날자 : " +sdf.format(cal.getTime()));
 
    //년월일 구하는 방법
    System.out.println("년 : " +cal.get(Calendar.YEAR));
    System.out.println("월 : " +cal.get(Calendar.MONTH));
    System.out.println("일 : " +cal.get(Calendar.DATE));
    System.out.println("요일여부 : " +cal.get(Calendar.DAY_OF_WEEK)); //1: 일요일 , 2: 월요일.. 7: 토요일
    System.out.println("WEEK_OF_YEAR : " +cal.get(Calendar.WEEK_OF_YEAR));// 몇째주 주인가?
    //2000년의 2월의 마지막 날은? => 29일
    System.out.println ("월의 마지막 일자 : " + cal.getActualMaximum ( Calendar.DATE ) );
 
    //1년에 전체 요일과 일요일과 토요일이 그리고 토요일과일요일을은 몇개?
    int allDay = 0;
    int allDayHoliday = 0;
    int allDaySun = 0;
    int allDaySat = 0;
 
    for(int i = 0; i< 12 ; i++){
      cal.set(2000,i,1); //초기 날짜 받음
      int x = cal.getActualMaximum ( Calendar.DATE ); //달의 마지막 날자를 다름 for에서 length로 수정
 
      for(int j = 1; j<= x ; j++){
        cal.set(2000,i,j); //day를 수정해줌
 
        int temp = cal.get(Calendar.DAY_OF_WEEK);
        System.out.println("temp: " + temp);
        if(temp == 1 ){
          allDayHoliday++;
          allDaySun++;
        }
        if(temp == 7 ){
          allDayHoliday++;
          allDaySat++;
        }
        allDay++;
      }
 
    }
    System.out.println("전체: " + allDay); //2000년은 윤년이 있어서 366일이다.
    System.out.println("전체토일: " + allDayHoliday); // 106
    System.out.println("일요일: " + allDaySun); //53
    System.out.println("토요일: " + allDaySat); // 53
cs


블로그 이미지

LunaStratos

Stratosphere Stream

댓글을 달아 주세요