From a32db2581fb69e44fb117349099134497ec43799 Mon Sep 17 00:00:00 2001 From: Danil Kornishev Date: Mon, 21 Nov 2016 11:36:05 -0500 Subject: [PATCH 1/6] Added example of spring constructor based dependency injection --- spring-constructor-di/pom.xml | 37 +++++++++++++++++++ .../main/java/com/baeldung/spring/Config.java | 24 ++++++++++++ .../com/baeldung/spring/SpringRunner.java | 30 +++++++++++++++ .../java/com/baeldung/spring/domain/Car.java | 24 ++++++++++++ .../com/baeldung/spring/domain/Engine.java | 16 ++++++++ .../baeldung/spring/domain/Transmission.java | 14 +++++++ .../src/main/resources/baeldung.xml | 20 ++++++++++ 7 files changed, 165 insertions(+) create mode 100644 spring-constructor-di/pom.xml create mode 100644 spring-constructor-di/src/main/java/com/baeldung/spring/Config.java create mode 100644 spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java create mode 100644 spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java create mode 100644 spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java create mode 100644 spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java create mode 100644 spring-constructor-di/src/main/resources/baeldung.xml diff --git a/spring-constructor-di/pom.xml b/spring-constructor-di/pom.xml new file mode 100644 index 0000000000..835a1ba4c8 --- /dev/null +++ b/spring-constructor-di/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + baeldung + baeldung + 1.0-SNAPSHOT + + + + org.springframework + spring-context + 4.2.6.RELEASE + + + javax.inject + javax.inject + 1 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + \ No newline at end of file diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java b/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java new file mode 100644 index 0000000000..e7f33c2ad4 --- /dev/null +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java @@ -0,0 +1,24 @@ +package com.baeldung.spring; + +import com.baeldung.spring.domain.Car; +import com.baeldung.spring.domain.Engine; +import com.baeldung.spring.domain.Transmission; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan("com.baeldung.spring") +public class Config { + + @Bean + public Engine engine() { + return new Engine("v8", 5); + } + + @Bean + public Transmission transmission() { + return new Transmission("sliding"); + } +} diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java b/spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java new file mode 100644 index 0000000000..e8a74b9482 --- /dev/null +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java @@ -0,0 +1,30 @@ +package com.baeldung.spring; + +import com.baeldung.spring.domain.Car; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class SpringRunner { + public static void main(String[] args) { + Car toyota = getCarFromXml(); + + System.out.println(toyota); + + toyota = getCarFromJavaConfig(); + + System.out.println(toyota); + } + + private static Car getCarFromJavaConfig() { + ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); + + return context.getBean(Car.class); + } + + private static Car getCarFromXml() { + ApplicationContext context = new ClassPathXmlApplicationContext("baeldung.xml"); + + return context.getBean(Car.class); + } +} diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java new file mode 100644 index 0000000000..73bcc430c1 --- /dev/null +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java @@ -0,0 +1,24 @@ +package com.baeldung.spring.domain; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.inject.Inject; +import javax.inject.Named; + +@Component +public class Car { + private Engine engine; + private Transmission transmission; + + @Autowired + public Car(Engine engine, Transmission transmission) { + this.engine = engine; + this.transmission = transmission; + } + + @Override + public String toString() { + return String.format("Engine: %s Transmission: %s", engine, transmission); + } +} diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java new file mode 100644 index 0000000000..1679692d6d --- /dev/null +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java @@ -0,0 +1,16 @@ +package com.baeldung.spring.domain; + +public class Engine { + private String type; + private int volume; + + public Engine(String type, int volume) { + this.type = type; + this.volume = volume; + } + + @Override + public String toString() { + return String.format("%s %d", type, volume); + } +} diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java new file mode 100644 index 0000000000..47df118020 --- /dev/null +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java @@ -0,0 +1,14 @@ +package com.baeldung.spring.domain; + +public class Transmission { + private String type; + + public Transmission(String type) { + this.type = type; + } + + @Override + public String toString() { + return String.format("%s", type); + } +} diff --git a/spring-constructor-di/src/main/resources/baeldung.xml b/spring-constructor-di/src/main/resources/baeldung.xml new file mode 100644 index 0000000000..7980460dcc --- /dev/null +++ b/spring-constructor-di/src/main/resources/baeldung.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file From 2375eda92c1c218e1dc10a45e6cd3873e992b010 Mon Sep 17 00:00:00 2001 From: Danil Kornishev Date: Mon, 21 Nov 2016 11:43:03 -0500 Subject: [PATCH 2/6] Cleanup --- spring-constructor-di/pom.xml | 55 +++++++++---------- .../main/java/com/baeldung/spring/Config.java | 7 +-- .../java/com/baeldung/spring/domain/Car.java | 3 - 3 files changed, 28 insertions(+), 37 deletions(-) diff --git a/spring-constructor-di/pom.xml b/spring-constructor-di/pom.xml index 835a1ba4c8..27418c9d0c 100644 --- a/spring-constructor-di/pom.xml +++ b/spring-constructor-di/pom.xml @@ -1,37 +1,32 @@ - 4.0.0 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - baeldung - baeldung - 1.0-SNAPSHOT + baeldung + baeldung + 1.0-SNAPSHOT - - - org.springframework - spring-context - 4.2.6.RELEASE - - - javax.inject - javax.inject - 1 - - + + + org.springframework + spring-context + 4.2.6.RELEASE + + - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - - + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + \ No newline at end of file diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java b/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java index e7f33c2ad4..661e2cee17 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java @@ -1,13 +1,12 @@ package com.baeldung.spring; -import com.baeldung.spring.domain.Car; -import com.baeldung.spring.domain.Engine; -import com.baeldung.spring.domain.Transmission; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import com.baeldung.spring.domain.Engine; +import com.baeldung.spring.domain.Transmission; + @Configuration @ComponentScan("com.baeldung.spring") public class Config { diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java index 73bcc430c1..96199fcee0 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java +++ b/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java @@ -3,9 +3,6 @@ package com.baeldung.spring.domain; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.inject.Inject; -import javax.inject.Named; - @Component public class Car { private Engine engine; From 126b7f1fe530121645f55e7060ec19570ee4c822 Mon Sep 17 00:00:00 2001 From: Danil Kornishev Date: Mon, 21 Nov 2016 11:45:11 -0500 Subject: [PATCH 3/6] Cleanup --- spring-constructor-di/src/main/resources/baeldung.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-constructor-di/src/main/resources/baeldung.xml b/spring-constructor-di/src/main/resources/baeldung.xml index 7980460dcc..b3aeef5ee9 100644 --- a/spring-constructor-di/src/main/resources/baeldung.xml +++ b/spring-constructor-di/src/main/resources/baeldung.xml @@ -17,4 +17,4 @@ - \ No newline at end of file + From 1ba76d72f08e4e63cc04f3df8b6ca3da8b22a010 Mon Sep 17 00:00:00 2001 From: Parth Joshi Date: Wed, 23 Nov 2016 09:41:02 +0530 Subject: [PATCH 4/6] Changes for mentioning db path... (#857) --- .../spring/service/RawDBDemoGeoIPLocationService.java | 2 +- spring-mvc-xml/src/main/webapp/GeoIpTest.jsp | 4 ++-- .../test/java/com/baeldung/geoip/GeoIpIntegrationTest.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java index 0a292ab1e9..af3ce8cfb3 100644 --- a/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/service/RawDBDemoGeoIPLocationService.java @@ -13,7 +13,7 @@ public class RawDBDemoGeoIPLocationService{ private DatabaseReader dbReader; public RawDBDemoGeoIPLocationService() throws IOException { - File database = new File("C:\\Users\\Parth Joshi\\Desktop\\GeoLite2-City.mmdb\\GeoLite2-City.mmdb"); + File database = new File("your-path-to-db-file"); dbReader = new DatabaseReader.Builder(database).build(); } diff --git a/spring-mvc-xml/src/main/webapp/GeoIpTest.jsp b/spring-mvc-xml/src/main/webapp/GeoIpTest.jsp index 431f6162bc..c2a60d5197 100644 --- a/spring-mvc-xml/src/main/webapp/GeoIpTest.jsp +++ b/spring-mvc-xml/src/main/webapp/GeoIpTest.jsp @@ -77,8 +77,8 @@
- - \ No newline at end of file diff --git a/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java b/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java index 72d528095e..2edaa125b7 100644 --- a/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java +++ b/spring-mvc-xml/src/test/java/com/baeldung/geoip/GeoIpIntegrationTest.java @@ -15,10 +15,10 @@ public class GeoIpIntegrationTest { @Test public void givenIP_whenFetchingCity_thenReturnsCityData() throws IOException, GeoIp2Exception { - File database = new File("C:\\Users\\Parth Joshi\\Desktop\\GeoLite2-City.mmdb\\GeoLite2-City.mmdb"); + File database = new File("your-path-to-db-file"); DatabaseReader dbReader = new DatabaseReader.Builder(database).build(); - InetAddress ipAddress = InetAddress.getByName("202.47.112.9"); + InetAddress ipAddress = InetAddress.getByName("your-public-ip"); CityResponse response = dbReader.city(ipAddress); String countryName = response.getCountry().getName(); From 61152915b76d9ec0f59380fb5fdaf97343b0bed5 Mon Sep 17 00:00:00 2001 From: Danil Kornishev Date: Wed, 23 Nov 2016 08:33:57 -0500 Subject: [PATCH 5/6] Moved sprindi examples --- spring-constructor-di/pom.xml | 32 ------------------- .../com/baeldung/constructordi}/Config.java | 8 ++--- .../baeldung/constructordi}/SpringRunner.java | 5 +-- .../baeldung/constructordi}/domain/Car.java | 2 +- .../constructordi}/domain/Engine.java | 2 +- .../constructordi}/domain/Transmission.java | 2 +- .../src/main/resources/baeldung.xml | 6 ++-- 7 files changed, 13 insertions(+), 44 deletions(-) delete mode 100644 spring-constructor-di/pom.xml rename {spring-constructor-di/src/main/java/com/baeldung/spring => spring-core/src/main/java/com/baeldung/constructordi}/Config.java (68%) rename {spring-constructor-di/src/main/java/com/baeldung/spring => spring-core/src/main/java/com/baeldung/constructordi}/SpringRunner.java (90%) rename {spring-constructor-di/src/main/java/com/baeldung/spring => spring-core/src/main/java/com/baeldung/constructordi}/domain/Car.java (92%) rename {spring-constructor-di/src/main/java/com/baeldung/spring => spring-core/src/main/java/com/baeldung/constructordi}/domain/Engine.java (86%) rename {spring-constructor-di/src/main/java/com/baeldung/spring => spring-core/src/main/java/com/baeldung/constructordi}/domain/Transmission.java (81%) rename {spring-constructor-di => spring-core}/src/main/resources/baeldung.xml (71%) diff --git a/spring-constructor-di/pom.xml b/spring-constructor-di/pom.xml deleted file mode 100644 index 27418c9d0c..0000000000 --- a/spring-constructor-di/pom.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - 4.0.0 - - baeldung - baeldung - 1.0-SNAPSHOT - - - - org.springframework - spring-context - 4.2.6.RELEASE - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - - - - \ No newline at end of file diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java b/spring-core/src/main/java/com/baeldung/constructordi/Config.java similarity index 68% rename from spring-constructor-di/src/main/java/com/baeldung/spring/Config.java rename to spring-core/src/main/java/com/baeldung/constructordi/Config.java index 661e2cee17..07568018f3 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/Config.java +++ b/spring-core/src/main/java/com/baeldung/constructordi/Config.java @@ -1,14 +1,14 @@ -package com.baeldung.spring; +package com.baeldung.constructordi; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; -import com.baeldung.spring.domain.Engine; -import com.baeldung.spring.domain.Transmission; +import com.baeldung.constructordi.domain.Engine; +import com.baeldung.constructordi.domain.Transmission; @Configuration -@ComponentScan("com.baeldung.spring") +@ComponentScan("com.baeldung.constructordi") public class Config { @Bean diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java b/spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java similarity index 90% rename from spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java rename to spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java index e8a74b9482..623739f036 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/SpringRunner.java +++ b/spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java @@ -1,10 +1,11 @@ -package com.baeldung.spring; +package com.baeldung.constructordi; -import com.baeldung.spring.domain.Car; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; +import com.baeldung.constructordi.domain.Car; + public class SpringRunner { public static void main(String[] args) { Car toyota = getCarFromXml(); diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java b/spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java similarity index 92% rename from spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java rename to spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java index 96199fcee0..9f68ba5cd9 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Car.java +++ b/spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.domain; +package com.baeldung.constructordi.domain; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java b/spring-core/src/main/java/com/baeldung/constructordi/domain/Engine.java similarity index 86% rename from spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java rename to spring-core/src/main/java/com/baeldung/constructordi/domain/Engine.java index 1679692d6d..f2987988eb 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Engine.java +++ b/spring-core/src/main/java/com/baeldung/constructordi/domain/Engine.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.domain; +package com.baeldung.constructordi.domain; public class Engine { private String type; diff --git a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java b/spring-core/src/main/java/com/baeldung/constructordi/domain/Transmission.java similarity index 81% rename from spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java rename to spring-core/src/main/java/com/baeldung/constructordi/domain/Transmission.java index 47df118020..85271e1f2a 100644 --- a/spring-constructor-di/src/main/java/com/baeldung/spring/domain/Transmission.java +++ b/spring-core/src/main/java/com/baeldung/constructordi/domain/Transmission.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.domain; +package com.baeldung.constructordi.domain; public class Transmission { private String type; diff --git a/spring-constructor-di/src/main/resources/baeldung.xml b/spring-core/src/main/resources/baeldung.xml similarity index 71% rename from spring-constructor-di/src/main/resources/baeldung.xml rename to spring-core/src/main/resources/baeldung.xml index b3aeef5ee9..d84492f1d4 100644 --- a/spring-constructor-di/src/main/resources/baeldung.xml +++ b/spring-core/src/main/resources/baeldung.xml @@ -3,17 +3,17 @@ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> - + - + - + From 2edb881680cf1354cc6c5e04b361482cbc9166ae Mon Sep 17 00:00:00 2001 From: eugenp Date: Wed, 23 Nov 2016 16:39:52 +0200 Subject: [PATCH 6/6] compilation fix --- .../baeldung/okhttp/OkHttpGetLiveTest.java | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java index 08d41fe7ab..034833da0d 100644 --- a/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java +++ b/spring-rest/src/test/java/org/baeldung/okhttp/OkHttpGetLiveTest.java @@ -1,11 +1,14 @@ package org.baeldung.okhttp; -import okhttp3.*; -import org.junit.Test; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; import java.io.IOException; + import org.junit.Before; import org.junit.Test; + import okhttp3.Call; import okhttp3.Callback; import okhttp3.HttpUrl; @@ -13,7 +16,6 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; - public class OkHttpGetLiveTest { private static final String BASE_URL = "http://localhost:8080/spring-rest"; @@ -23,14 +25,12 @@ public class OkHttpGetLiveTest { @Before public void init() { - client = new OkHttpClient(); + client = new OkHttpClient(); } @Test public void whenGetRequest_thenCorrect() throws IOException { - Request request = new Request.Builder() - .url(BASE_URL + "/date") - .build(); + Request request = new Request.Builder().url(BASE_URL + "/date").build(); Call call = client.newCall(request); Response response = call.execute(); @@ -45,9 +45,7 @@ public class OkHttpGetLiveTest { String url = urlBuilder.build().toString(); - Request request = new Request.Builder() - .url(url) - .build(); + Request request = new Request.Builder().url(url).build(); Call call = client.newCall(request); Response response = call.execute(); @@ -57,9 +55,7 @@ public class OkHttpGetLiveTest { @Test public void whenAsynchronousGetRequest_thenCorrect() throws InterruptedException { - Request request = new Request.Builder() - .url(BASE_URL + "/date") - .build(); + Request request = new Request.Builder().url(BASE_URL + "/date").build(); Call call = client.newCall(request); @@ -69,7 +65,7 @@ public class OkHttpGetLiveTest { } public void onFailure(Call call, IOException e) { - fail(); + fail(); } });