반응형


spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB


반응형
반응형

fassterxml.jackson JSON util을 이용시 아래와 같은 예외가 발생한다면 해당 메서드에 @JsonIgnoreProperties(ignoreUnknown = true) 를 추가해주면 됩니다.



com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field



혹은 아래와 같이 설정하셔도 됩니다.


new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)


반응형
반응형

Apache POI 사용중에 아래 예외가 발생했습니다.


Exception - The maximum column width for an individual cell is 255 characters.


문제가 발생한 코드입니다.

sheet.setColumnWidth(i, sheet.getColumnWidth(i) + 1500);


setColumnWidth 의 주석을 살펴 보았습니다.


Open Declaration void org.apache.poi.ss.usermodel.Sheet.setColumnWidth(int columnIndex, int width)
 
 
Set the width (in units of 1/256th of a character width) 
 
The maximum column width for an individual cell is 255 characters. This value represents the number of characters that can be displayed in a cell that is formatted with the standard font (first font in the workbook). 
 
Character width is defined as the maximum digit width of the numbers 012, ... 9 as rendered using the default font (first font in the workbook). 
Unless you are using a very special font, the default character is '0' (zero), this is true for Arial (default font font in HSSF) and Calibri (default font in XSSF) 
 
Please note, that the width set by this method includes 4 pixels of margin padding (two on each side), plus 1 pixel padding for the gridlines (Section 3.3.1.12 of the OOXML spec). This results is a slightly less value of visible characters than passed to this method (approx. 1/2 of a character). 
 
To compute the actual number of visible characters, Excel uses the following formula (Section 3.3.1.12 of the OOXML spec): 
 
width = Truncate([{Number of Visible Characters} * {Maximum Digit Width} + {5 pixel padding}]/{Maximum Digit Width}*256)/256 
Using the Calibri font as an example, the maximum digit width of 11 point font size is 7 pixels (at 96 dpi). If you set a column width to be eight characters wide, e.g. setColumnWidth(columnIndex, 8*256), then the actual value of visible characters (the value shown in Excel) is derived from the following equation: Truncate([numChars*7+5]/7*256)/256 = 8; which gives 7.29.
 
Parameters:
columnIndex - the column to set (0-based)
width - the width in units of 1/256th of a character width
Throws:
IllegalArgumentException - if width > 255*256 (the maximum column width in Excel is 255 characters)


수정된 코드 입니다.

sheet.setColumnWidth(i, Math.min(255 * 256, sheet.getColumnWidth(i) + 1500));


반응형
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
  static Runtime runtime = Runtime.getRuntime();
 
  public static void main(String[] args) {
    // -Xmx
    long max = runtime.maxMemory() / 1024 / 1024;
 
    // -Xms
    long total = runtime.totalMemory() / 1024 / 1024;
 
    long free = runtime.freeMemory() / 1024 / 1024;
    
    System.out.println(String.format("Max: %,dMB, Total: %,dMB, Free: %,dMB, Used: %,dMB", max, total, free, total - free));
  }


결과

Max: 1,796MB, Total: 123MB, Free: 121MB, Used: 2MB


반응형
반응형

Jdk 1.8 부터 java.util.Base64를 이용해 인코딩 디코딩을 할 수 있습니다.


[예제]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Decoder;
import java.util.Base64.Encoder;
 
public class Test {
  public static void main(String[] args) throws UnsupportedEncodingException {
    Encoder encoder = Base64.getEncoder();
    String encoded = encoder.encodeToString("Hello Base64".getBytes("UTF-8"));
    System.out.println(encoded);
 
    Decoder decoder = Base64.getDecoder();
    byte[] decoded = decoder.decode(encoded);
    System.out.println(new String(decoded, "UTF-8"));
  }
}


[결과]

SGVsbG8gQmFzZTY0
Hello Base64


반응형
반응형

2017/09/19 - [java] - spring boot - @Scheduled Test


@Scheduled 의 반복동작까지 그대로 테스트 하고 싶다면 위의 글처럼 하면 됩니다.


하지만 @Scheduled 가 걸린 함수를 기능 테스트만 하고 싶다면 조금 더 간편한 방법이 있습니다.


@EnableScheduling 을 선택적으로 사용하는 방법입니다.


@Scheduled 는 @EnableScheduling가 사전에 정의 되어야만 실행되도록 되어있습니다.


보통 @SpringBootApplication 가 정의된 Main Class에 @EnableScheduling 도 통으로 같이 설정해서 사용하는데,


Main Class에서 @EnableScheduling 을 제거하고 아래와 같은 @Configuration 클래스를 하나 추가해 @Profile을 통해 선택적으로  @Scheduled 함수들의 스케쥴링 여부를 결정할 수 있습니다.


@Profile("!test")
@Configuration
@EnableScheduling
public class SchedulingConfiguration {
 
}



@Profile("!test") 은 의미는 test 프로파일 active 되지 않았을 때 해당 설정을 적용하라는 뜻 입니다.


test 프로파일을 active 하려면 java 실행시 VMArguments 에 아래와 같이 설정하거나, 


-Dspring.profiles.active="test"


application.properties에 아래처럼 적용하면 됩니다.


spring.profiles.active=test


반응형
반응형

Mybatis 에서 <sql>, <include> 간단한 사용법입니다.


* <sql> 안에서 <prorperty> 로 받은 값을 <if>나 <bind> 에 쓰고 싶었는데 변수로 인식하지 못하는게 아쉬웠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<sql id="columns">
    ${alias}id,
    ${alias}name,
    ${alias}age
</sql>
 
<insert id="insertUser">
    INSERT INTO USER (
           <include refid="columns"><property name="alias" value=""/></include>
         ) VALUES (
           #{entity.id},
           #{entity.name},
           #{entity.age})
</insert>
 
<select id="selectUser">
    SELECT <include refid="columns"><property name="alias" value="user."/></include>
      FROM USER user
     WHERE age = 15
</select>


반응형
반응형

간단한 랜덤 함수입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  public static String getRandomAlphaNumeric(int len) {
    char[] charSet = { '0''1''2''3''4''5''6''7''8''9'
                       'a''b''c''d''e''f''g''h''i''j'
                       'k''l''m''n''o''p''q''r''s''t'
                       'u''v''w''x''y''z' };
 
    int idx = 0;
    StringBuffer sb = new StringBuffer();
 
    for (int i = 0; i < len; i++) {
      idx = (int) (charSet.length * Math.random());
      sb.append(charSet[idx]);
    }
 
    return sb.toString();
  }


반응형
반응형

kisa 에서 제공하는 sha256 java 사용방법 예제 입니다.


https://seed.kisa.or.kr/iwt/ko/bbs/EgovReferenceDetail.do?bbsId=BBSMSTR_000000000002&nttId=79


위 사이트에서 파일(KISA_SHA256.zip)을 다운받아 압축을 풀면 "[02] JAVA" 폴더에 "KISA_SHA256.java" 파일이 있습니다.


그런데 뭔가 사용방법이 친절하지 않게 되어있습니다.


이왕 만들어 배포할거 좀 친절하게 해주면 좋을텐데 말입니다.


그래서 좀더 편하게 sha256 암호화 하려면 아래 코드를 덧 붙여서 사용하시면 됩니다.


1
2
3
4
5
6
7
8
9
10
  public static String encrypt(String plainText) {
    byte[] bytes = plainText.getBytes();
    byte[] pszDigest = new byte[32];
    KISA_SHA256.SHA256_Encrpyt(bytes, bytes.length, pszDigest);
    StringBuffer encrypted = new StringBuffer();
    for (int i = 0; i < 32; i++) {
      encrypted.append(String.format("%02x", pszDigest[i]));
    }
    return encrypted.toString();
  }


반응형
반응형

mybatis jndi 설정 예제입니다.


1
2
3
4
5
6
7
8
9
10
<configuration>
  <environments default="jndi">
    <environment id="jndi">
      <transactionManager type="JDBC" />
      <dataSource type="JNDI">
        <property name="data_source" value="java:comp/env/jdbc/test" />
      </dataSource>
    </environment>
  </environments>
</configuration>


반응형

+ Recent posts