21
21
22
22
import org .springframework .context .annotation .Bean ;
23
23
import org .springframework .context .annotation .Configuration ;
24
+ import org .springframework .context .annotation .Import ;
25
+ import org .springframework .context .annotation .Profile ;
26
+ import org .springframework .core .env .Environment ;
24
27
import org .springframework .jdbc .core .namedparam .NamedParameterJdbcTemplate ;
25
28
26
29
import lombok .RequiredArgsConstructor ;
27
30
28
- import ru .mystamps .web .config .StrategiesConfig ;
29
-
30
31
/**
31
32
* Spring configuration that is required for using images in an application.
32
33
*
@@ -49,16 +50,17 @@ public ImageController imageController() {
49
50
}
50
51
51
52
@ RequiredArgsConstructor
53
+ @ Import ({ DbStrategyConfig .class , FsStrategyConfig .class })
52
54
public static class Services {
53
55
54
56
private final NamedParameterJdbcTemplate jdbcTemplate ;
55
- private final StrategiesConfig strategiesConfig ;
57
+ private final ImagePersistenceStrategy imagePersistenceStrategy ;
56
58
57
59
@ Bean
58
60
public ImageService getImageService (ImageDao imageDao ) {
59
61
return new ImageServiceImpl (
60
62
LoggerFactory .getLogger (ImageServiceImpl .class ),
61
- strategiesConfig . getImagePersistenceStrategy () ,
63
+ imagePersistenceStrategy ,
62
64
new TimedImagePreviewStrategy (
63
65
LoggerFactory .getLogger (TimedImagePreviewStrategy .class ),
64
66
new ThumbnailatorImagePreviewStrategy ()
@@ -74,4 +76,42 @@ public ImageDao imageDao() {
74
76
75
77
}
76
78
79
+ @ Profile ("test" )
80
+ @ RequiredArgsConstructor
81
+ public static class DbStrategyConfig {
82
+
83
+ private final NamedParameterJdbcTemplate jdbcTemplate ;
84
+
85
+ @ Bean
86
+ public ImagePersistenceStrategy getImagePersistenceStrategy (ImageDataDao imageDataDao ) {
87
+ return new DatabaseImagePersistenceStrategy (
88
+ LoggerFactory .getLogger (DatabaseImagePersistenceStrategy .class ),
89
+ imageDataDao
90
+ );
91
+ }
92
+
93
+ @ Bean
94
+ public ImageDataDao imageDataDao () {
95
+ return new JdbcImageDataDao (jdbcTemplate );
96
+ }
97
+
98
+ }
99
+
100
+ @ Profile ({ "prod" , "travis" })
101
+ @ RequiredArgsConstructor
102
+ public static class FsStrategyConfig {
103
+
104
+ private final Environment env ;
105
+
106
+ @ Bean
107
+ public ImagePersistenceStrategy getImagePersistenceStrategy () {
108
+ return new FilesystemImagePersistenceStrategy (
109
+ LoggerFactory .getLogger (FilesystemImagePersistenceStrategy .class ),
110
+ env .getRequiredProperty ("app.upload.dir" ),
111
+ env .getRequiredProperty ("app.preview.dir" )
112
+ );
113
+ }
114
+
115
+ }
116
+
77
117
}
0 commit comments