Я использую Spring Boot 1.4.2 и использую @ConfigurationProperties
для загрузки моих свойств в свой bean-компонент свойств следующим образом:
@ConfigurationProperties(prefix="my.prop", locations = "classpath:properties/myprop.properties")
@Configuration
public class MyProp {
private String firstName;
private String lastName;
// getters & setters
}
Также у меня есть этот файл свойств:
my.prop.firstName=fede
my.prop.lastName=ENC(MzWi5OXKOja3DwA52Elf23xsBPr4FgMi5cEYTPkDets=)
Мой контроллер довольно прост:
@RestController
public class MyController {
@Autowired
private MyProp prop;
@GetMapping("/")
public String get() {
System.out.println(String.format("UserConfig - user: %s, lastName: %s", prop.getFirstName(), prop.getLastName()));
return "something";
}
}
Все работает нормально, мои свойства загружены, и мой результат:
2016-11-28 14:36:30,402 INFO 9780 --- [qtp792210014-27] c.c.b.m.c.c.MyController : [OhxxugGR] UserConfig - user: fede, lastName: ENC(MzWi5OXKOja3DwA52Elf23xsBPr4FgMi5cEYTPkDets=)
Я подтвердил, что все работает нормально, и я хотел использовать jasypt для шифрования и использования своих свойств, однако я добавил эту зависимость в pom:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.9</version>
</dependency>
Но jasypt не расшифровывает, как вы можете видеть в логах. Я прочитал документацию, представленную в этом jasypt стартере, но мне все равно не повезло.
Это мой основной класс:
@SpringBootApplication
@EnableEncryptableProperties
public class ServiceBaseApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceBaseApplication.class, args);
}
}
После тестирования того, что stephane-nicoll указал в своем комментарии, кажется, что Jasypt выбирает только свойства, расположенные в application.properties
, так как Могу ли я использовать jasypt со свойствами, расположенными вне этого файла?
jasypt.encryptor.password
, это не ответ на самом деле, но на самом деле, когда я хочу настроить локальный, но всегда получаю исключение, поскольку требуетсяjasypt.encryptor.password
, если я установил пароль , возникнетmake sure encryption/decryption passwords match
исключение. - person Liping Huang   schedule 29.11.2016locations
, этот атрибут устарел. Возможно, jasypt расшифровывает только те свойства, которые загружаются из обычных мест. Что произойдет, если вы удалите атрибутlocations
и поместите эти свойства вapplication.properties
? - person Stephane Nicoll   schedule 29.11.2016application.properties
, а не те, которые загружены сlocation
. Что мне следует использовать вместо местоположения, если я хочу иметь модульные свойства? Я переношу проект, состоящий из модулей с более чем 300 свойствами. - person Federico Piazza   schedule 29.11.2016