Skip to content

Commit 38b721b

Browse files
committed
Refactor for blog post
1 parent cffcaf1 commit 38b721b

16 files changed

+181
-170
lines changed

pom.xml

+8-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
44
<modelVersion>4.0.0</modelVersion>
55

6-
<groupId>com.example</groupId>
6+
<groupId>com.marcosbarbero.wd</groupId>
77
<artifactId>multiple-mongo-connectors</artifactId>
88
<version>0.0.1-SNAPSHOT</version>
99
<packaging>jar</packaging>
@@ -14,7 +14,7 @@
1414
<parent>
1515
<groupId>org.springframework.boot</groupId>
1616
<artifactId>spring-boot-starter-parent</artifactId>
17-
<version>1.4.0.RELEASE</version>
17+
<version>1.5.10.RELEASE</version>
1818
<relativePath/>
1919
<!-- lookup parent from repository -->
2020
</parent>
@@ -31,6 +31,12 @@
3131
<artifactId>spring-boot-starter-data-mongodb</artifactId>
3232
</dependency>
3333

34+
<dependency>
35+
<groupId>org.springframework.boot</groupId>
36+
<artifactId>spring-boot-configuration-processor</artifactId>
37+
<optional>true</optional>
38+
</dependency>
39+
3440
<dependency>
3541
<groupId>org.projectlombok</groupId>
3642
<artifactId>lombok</artifactId>

src/main/java/com/example/Application.java

-62
This file was deleted.

src/main/java/com/example/config/MultipleMongoConfig.java

-49
This file was deleted.

src/main/java/com/example/config/PrimaryMongoConfig.java

-15
This file was deleted.

src/main/java/com/example/config/SecondaryMongoConfig.java

-15
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.marcosbarbero.wd.multiplemongo;
2+
3+
import com.marcosbarbero.wd.multiplemongo.repository.primary.PrimaryModel;
4+
import com.marcosbarbero.wd.multiplemongo.repository.primary.PrimaryRepository;
5+
import com.marcosbarbero.wd.multiplemongo.repository.secondary.SecondaryModel;
6+
import com.marcosbarbero.wd.multiplemongo.repository.secondary.SecondaryRepository;
7+
8+
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.boot.CommandLineRunner;
10+
import org.springframework.boot.SpringApplication;
11+
import org.springframework.boot.autoconfigure.SpringBootApplication;
12+
13+
import java.util.List;
14+
15+
import lombok.extern.slf4j.Slf4j;
16+
17+
@Slf4j
18+
@SpringBootApplication
19+
public class Application implements CommandLineRunner {
20+
21+
@Autowired
22+
private PrimaryRepository primaryRepository;
23+
24+
@Autowired
25+
private SecondaryRepository secondaryRepository;
26+
27+
public static void main(String[] args) {
28+
SpringApplication.run(Application.class, args);
29+
}
30+
31+
@Override
32+
public void run(String... args) throws Exception {
33+
log.info("************************************************************");
34+
log.info("Start printing mongo objects");
35+
log.info("************************************************************");
36+
this.primaryRepository.save(new PrimaryModel(null, "Primary database plain object"));
37+
38+
this.secondaryRepository.save(new SecondaryModel(null, "Secondary database plain object"));
39+
40+
List<PrimaryModel> primaries = this.primaryRepository.findAll();
41+
for (PrimaryModel primary : primaries) {
42+
log.info(primary.toString());
43+
}
44+
45+
List<SecondaryModel> secondaries = this.secondaryRepository.findAll();
46+
47+
for (SecondaryModel secondary : secondaries) {
48+
log.info(secondary.toString());
49+
}
50+
51+
log.info("************************************************************");
52+
log.info("Ended printing mongo objects");
53+
log.info("************************************************************");
54+
55+
}
56+
}
57+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.marcosbarbero.wd.multiplemongo.config;
2+
3+
import com.mongodb.MongoClient;
4+
5+
import org.springframework.beans.factory.annotation.Qualifier;
6+
import org.springframework.boot.autoconfigure.mongo.MongoProperties;
7+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
8+
import org.springframework.context.annotation.Bean;
9+
import org.springframework.context.annotation.Configuration;
10+
import org.springframework.context.annotation.Primary;
11+
import org.springframework.data.mongodb.MongoDbFactory;
12+
import org.springframework.data.mongodb.core.MongoTemplate;
13+
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
14+
15+
import lombok.RequiredArgsConstructor;
16+
17+
/**
18+
* @author Marcos Barbero
19+
*/
20+
@Configuration
21+
@RequiredArgsConstructor
22+
@EnableConfigurationProperties(MultipleMongoProperties.class)
23+
public class MultipleMongoConfig {
24+
25+
private final MultipleMongoProperties mongoProperties;
26+
27+
@Primary
28+
@Bean(name = PrimaryMongoConfig.MONGO_TEMPLATE)
29+
public MongoTemplate primaryMongoTemplate() throws Exception {
30+
return new MongoTemplate(primaryFactory(this.mongoProperties.getPrimary()));
31+
}
32+
33+
@Bean(name = SecondaryMongoConfig.MONGO_TEMPLATE)
34+
public MongoTemplate secondaryMongoTemplate() throws Exception {
35+
return new MongoTemplate(secondaryFactory(this.mongoProperties.getSecondary()));
36+
}
37+
38+
@Bean
39+
@Primary
40+
public MongoDbFactory primaryFactory(final MongoProperties mongo) throws Exception {
41+
return new SimpleMongoDbFactory(new MongoClient(mongo.getHost(), mongo.getPort()),
42+
mongo.getDatabase());
43+
}
44+
45+
@Bean
46+
public MongoDbFactory secondaryFactory(final MongoProperties mongo) throws Exception {
47+
return new SimpleMongoDbFactory(new MongoClient(mongo.getHost(), mongo.getPort()),
48+
mongo.getDatabase());
49+
}
50+
51+
}
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
package com.example.config.props;
2-
3-
import lombok.Data;
1+
package com.marcosbarbero.wd.multiplemongo.config;
42

53
import org.springframework.boot.autoconfigure.mongo.MongoProperties;
64
import org.springframework.boot.context.properties.ConfigurationProperties;
75

6+
import lombok.Data;
7+
88
/**
99
* @author Marcos Barbero
1010
*/
1111
@Data
1212
@ConfigurationProperties(prefix = "mongodb")
1313
public class MultipleMongoProperties {
1414

15-
private MongoProperties primary = new MongoProperties();
16-
private MongoProperties secondary = new MongoProperties();
15+
private MongoProperties primary = new MongoProperties();
16+
private MongoProperties secondary = new MongoProperties();
1717
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.marcosbarbero.wd.multiplemongo.config;
2+
3+
import org.springframework.context.annotation.Configuration;
4+
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
5+
6+
import static com.marcosbarbero.wd.multiplemongo.config.PrimaryMongoConfig.MONGO_TEMPLATE;
7+
8+
/**
9+
* @author Marcos Barbero
10+
*/
11+
@Configuration
12+
@EnableMongoRepositories(basePackages = "com.marcosbarbero.wd.multiplemongo.repository.primary",
13+
mongoTemplateRef = MONGO_TEMPLATE)
14+
public class PrimaryMongoConfig {
15+
16+
protected static final String MONGO_TEMPLATE = "primaryMongoTemplate";
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.marcosbarbero.wd.multiplemongo.config;
2+
3+
import org.springframework.context.annotation.Configuration;
4+
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
5+
6+
import static com.marcosbarbero.wd.multiplemongo.config.SecondaryMongoConfig.MONGO_TEMPLATE;
7+
8+
/**
9+
* @author Marcos Barbero
10+
*/
11+
@Configuration
12+
@EnableMongoRepositories(basePackages = "com.marcosbarbero.wd.multiplemongo.repository.secondary",
13+
mongoTemplateRef = MONGO_TEMPLATE)
14+
public class SecondaryMongoConfig {
15+
16+
protected static final String MONGO_TEMPLATE = "secondaryMongoTemplate";
17+
}

src/main/java/com/example/model/repository/primary/PrimaryMongoObject.java src/main/java/com/marcosbarbero/wd/multiplemongo/repository/primary/PrimaryModel.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.model.repository.primary;
1+
package com.marcosbarbero.wd.multiplemongo.repository.primary;
22

33
import lombok.AllArgsConstructor;
44
import lombok.Data;
@@ -14,7 +14,7 @@
1414
@AllArgsConstructor
1515
@NoArgsConstructor
1616
@Document(collection = "first_mongo")
17-
public class PrimaryMongoObject {
17+
public class PrimaryModel {
1818

1919
@Id
2020
private String id;
@@ -23,7 +23,7 @@ public class PrimaryMongoObject {
2323

2424
@Override
2525
public String toString() {
26-
return "PrimaryMongoObject{" + "id='" + id + '\'' + ", value='" + value + '\''
26+
return "PrimaryModel{" + "id='" + id + '\'' + ", value='" + value + '\''
2727
+ '}';
2828
}
2929
}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.example.model.repository.primary;
1+
package com.marcosbarbero.wd.multiplemongo.repository.primary;
22

33
import org.springframework.data.mongodb.repository.MongoRepository;
44

55
/**
66
* @author Marcos Barbero
77
*/
8-
public interface PrimaryRepository extends MongoRepository<PrimaryMongoObject, String> {
8+
public interface PrimaryRepository extends MongoRepository<PrimaryModel, String> {
99
}

0 commit comments

Comments
 (0)