티스토리 뷰

DEV/JAVA

spring boot + jasypt

초록매실원액 2017. 9. 15. 17:45

Unsupported major.minor version 52.0

jasype 연동시 위와 같은 오류가 발생하면

1.jdk 버전을 1.8로 올리거나

2.jdk 버전에 맞은 version 을 찾는다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Caused by: java.lang.UnsupportedClassVersionError: com/ulisesbocchio/jasyptspringboot/EnableEncryptablePropertySourcesPostProcessor : Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:250)
    at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:405)
    ... 7 more
cs


pom.xml


1
2
3
4
5
6
<!-- jasypt -->
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>1.5-java7</version>
</dependency>
cs

maven Repository

https://mvnrepository.com/artifact/org.jasypt/jasypt 


application.java

- @EnbleEncryptableProperties

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
package ms;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
 
import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
 
@EnableEncryptableProperties
@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceTransactionManagerAutoConfiguration.class , DataSourceAutoConfiguration.class })
public class Application  extends SpringBootServletInitializer {    
    
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
    
    public static void main(String[] args)  throws Exception {
        SpringApplication.run(Application.class, args);
    }
}
 
cs


DatabaseConfig.java


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
58
59
60
61
62
63
64
package ms;
 
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
 
import javax.sql.DataSource;
 
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
 
@Configuration
@EnableTransactionManagement
@MapperScan("ms.persistence")
public class DatabaseConfig { 
 
    @Bean(destroyMethod="close")        
    DataSource dataSource(Environment env) throws SQLException, FileNotFoundException, IOException {
            
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();            
        encryptor.setPassword("pwkey");
            
        String decEnvUsername = encryptor.decrypt(env.getProperty("oracle.username"));
        String decEnvPwd = encryptor.decrypt(env.getProperty("oracle.password"));
        String envDriverClassName = env.getProperty("oracle.driverClassName");
        String envUrl = env.getProperty("oracle.url");
 
 
        BasicDataSource ret = new BasicDataSource();
        ret.setDriverClassName(envDriverClassName);
        ret.setUsername(decEnvUsername);                
        ret.setPassword(decEnvPwd);
        ret.setUrl(envUrl);
        return ret;
    }
    
    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
          SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
          sqlSessionFactoryBean.setDataSource(dataSource);
    
          Resource[] arrResource = new PathMatchingResourcePatternResolver()
                .getResources("classpath:mapper/*.xml");
          sqlSessionFactoryBean.setMapperLocations(arrResource);
    
          return sqlSessionFactoryBean.getObject();
    }
    
    @Bean
    public DataSourceTransactionManager transactionManager(DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}
 
cs


application.properties


1
2
3
4
5
6
oracle.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
oracle.url=jdbc:log4jdbc:oracle:thin:@127.0.0.1:1521:xe
oracle.username=2KvE1Uj9V1glieN2po522sjug==
oracle.password=Se+621aELz1HA0TjTIDm2RtEg==
cs


정상적으로 jasypt 사용할땐

oracle.ousername=ENC(2KvEUj9VglieN2po52sjug==) 이렇게 ENC로 감싸야하나 

Spring boot bean 생성시 문제가 발생해서 ENC를 빼고 작성하였다.


Enc.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
 
public class Enc{
    
    public static void main(String[] args) {
        
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        encryptor.setPassword("pwkey");
        String username = encryptor.encrypt("muser");
        String password = encryptor.encrypt("mpwer1234");
        
        System.out.println("username : " + username);
        System.out.println("password : " + password);
        
        System.out.println("username(dec) : " + encryptor.decrypt(username));
        System.out.println("password(dec) : " + encryptor.decrypt(password));    
    }
}
cs


'DEV > JAVA' 카테고리의 다른 글

AWS S3 파일업로드  (0) 2019.12.31
StringUtils.isEmtpty() vs StringUtils.isBlank()  (0) 2016.03.18
POI 로 엑셀파일 읽기(xls , xlsx)  (0) 2016.03.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함