Skip to content

Commit f88d404

Browse files
authored
Refactor MySQLAutoconfiguration (eugenp#1703)
1 parent 7a96484 commit f88d404

File tree

1 file changed

+20
-28
lines changed

1 file changed

+20
-28
lines changed

spring-boot/src/main/java/com/baeldung/autoconfiguration/MySQLAutoconfiguration.java

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,10 @@
11
package com.baeldung.autoconfiguration;
22

3-
import java.util.Arrays;
4-
import java.util.Properties;
5-
6-
import javax.persistence.EntityManagerFactory;
7-
import javax.sql.DataSource;
8-
93
import org.springframework.beans.factory.annotation.Autowired;
104
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
11-
import org.springframework.boot.autoconfigure.condition.ConditionMessage;
5+
import org.springframework.boot.autoconfigure.condition.*;
126
import org.springframework.boot.autoconfigure.condition.ConditionMessage.Style;
13-
import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
14-
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
15-
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
16-
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
17-
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
18-
import org.springframework.boot.autoconfigure.condition.ConditionalOnResource;
19-
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
20-
import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
21-
import org.springframework.context.annotation.Bean;
22-
import org.springframework.context.annotation.ConditionContext;
23-
import org.springframework.context.annotation.Conditional;
24-
import org.springframework.context.annotation.Configuration;
25-
import org.springframework.context.annotation.PropertySource;
7+
import org.springframework.context.annotation.*;
268
import org.springframework.core.Ordered;
279
import org.springframework.core.env.Environment;
2810
import org.springframework.core.type.AnnotatedTypeMetadata;
@@ -32,11 +14,17 @@
3214
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
3315
import org.springframework.util.ClassUtils;
3416

17+
import javax.persistence.EntityManagerFactory;
18+
import javax.sql.DataSource;
19+
import java.util.Arrays;
20+
import java.util.Properties;
21+
3522
@Configuration
3623
@ConditionalOnClass(DataSource.class)
3724
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)
3825
@PropertySource("classpath:mysql.properties")
3926
public class MySQLAutoconfiguration {
27+
4028
@Autowired
4129
private Environment env;
4230

@@ -74,7 +62,7 @@ public DataSource dataSource2() {
7462
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
7563
final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
7664
em.setDataSource(dataSource());
77-
em.setPackagesToScan(new String[] { "com.baeldung.autoconfiguration.example" });
65+
em.setPackagesToScan("com.baeldung.autoconfiguration.example");
7866
em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
7967
if (additionalProperties() != null) {
8068
em.setJpaProperties(additionalProperties());
@@ -104,17 +92,21 @@ final Properties additionalProperties() {
10492

10593
static class HibernateCondition extends SpringBootCondition {
10694

107-
private static String[] CLASS_NAMES = { "org.hibernate.ejb.HibernateEntityManager", "org.hibernate.jpa.HibernateEntityManager" };
95+
private static final String[] CLASS_NAMES = {
96+
"org.hibernate.ejb.HibernateEntityManager",
97+
"org.hibernate.jpa.HibernateEntityManager" };
10898

10999
@Override
110100
public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) {
111101
ConditionMessage.Builder message = ConditionMessage.forCondition("Hibernate");
112-
for (String className : CLASS_NAMES) {
113-
if (ClassUtils.isPresent(className, context.getClassLoader())) {
114-
return ConditionOutcome.match(message.found("class").items(Style.NORMAL, className));
115-
}
116-
}
117-
return ConditionOutcome.noMatch(message.didNotFind("class", "classes").items(Style.NORMAL, Arrays.asList(CLASS_NAMES)));
102+
103+
return Arrays.stream(CLASS_NAMES)
104+
.filter(className -> ClassUtils.isPresent(className, context.getClassLoader()))
105+
.map(className -> ConditionOutcome
106+
.match(message.found("class").items(Style.NORMAL, className)))
107+
.findAny()
108+
.orElseGet(() -> ConditionOutcome
109+
.noMatch(message.didNotFind("class", "classes").items(Style.NORMAL, Arrays.asList(CLASS_NAMES))));
118110
}
119111

120112
}

0 commit comments

Comments
 (0)