From dafe2f55539d357b1f89513d143555f3520134c4 Mon Sep 17 00:00:00 2001 From: Raksha Rao Date: Thu, 25 Jan 2018 10:31:34 +0530 Subject: [PATCH 1/7] Bean injection types --- .../AccountDetails.java | 40 +++++++++++++++++++ .../BankAccountApplication.java | 19 +++++++++ .../BankAccountService.java | 9 +++++ .../BankAccountWithConstructorInjection.java | 17 ++++++++ .../BankAccountWithSetterInjection.java | 22 ++++++++++ .../samplebeaninjectiontypes-context.xml | 21 ++++++++++ .../SampleBeanInjectionTest.java | 40 +++++++++++++++++++ 7 files changed, 168 insertions(+) create mode 100644 spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/AccountDetails.java create mode 100644 spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountApplication.java create mode 100644 spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountService.java create mode 100644 spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithConstructorInjection.java create mode 100644 spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithSetterInjection.java create mode 100644 spring-core/src/main/resources/samplebeaninjectiontypes-context.xml create mode 100644 spring-core/src/test/java/com/baeldung/samplebeaninjectiontypes/SampleBeanInjectionTest.java diff --git a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/AccountDetails.java b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/AccountDetails.java new file mode 100644 index 0000000000..2e4eb3b894 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/AccountDetails.java @@ -0,0 +1,40 @@ +package com.baeldung.samplebeaninjectionypes; + +public class AccountDetails { + + private Long accountNumber; + + private String accountType; + + private String accountName; + + public AccountDetails(Long accountNumber, String accountType, String accountName) { + this.accountNumber = accountNumber; + this.accountType = accountType; + this.accountName = accountName; + } + + public Long getAccountNumber() { + return accountNumber; + } + + public void setAccountNumber(Long accountNumber) { + this.accountNumber = accountNumber; + } + + public String getAccountType() { + return accountType; + } + + public void setAccountType(String accountType) { + this.accountType = accountType; + } + + public String getAccountName() { + return accountName; + } + + public void setAccountName(String accountName) { + this.accountName = accountName; + } +} diff --git a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountApplication.java b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountApplication.java new file mode 100644 index 0000000000..466255fd2e --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountApplication.java @@ -0,0 +1,19 @@ +package com.baeldung.samplebeaninjectionypes; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class BankAccountApplication { + + + public static void main(String[] args) { + ApplicationContext context = new ClassPathXmlApplicationContext("samplebeaninjectiontypes-context.xml"); + BankAccountWithSetterInjection bankAccountWithSetterInjection = (BankAccountWithSetterInjection) context.getBean("bankAccountWithSetterInjectionBean"); + + bankAccountWithSetterInjection.openAccount(12345L,"Savings","John Doe"); + + BankAccountWithConstructorInjection bankAccountWithConstructorInjection = (BankAccountWithConstructorInjection) context.getBean("bankAccountWithConstructorInjectionBean"); + bankAccountWithSetterInjection.openAccount(12345L,"Savings","John Doe"); + + } +} diff --git a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountService.java b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountService.java new file mode 100644 index 0000000000..0f62db3655 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountService.java @@ -0,0 +1,9 @@ +package com.baeldung.samplebeaninjectionypes; + +public class BankAccountService { + + public AccountDetails openAccount(Long accountNumber, String accountType, String owner) { + AccountDetails accountDetails = new AccountDetails(accountNumber,accountType,owner); + return accountDetails; + } +} diff --git a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithConstructorInjection.java b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithConstructorInjection.java new file mode 100644 index 0000000000..1bc75d15e0 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithConstructorInjection.java @@ -0,0 +1,17 @@ +package com.baeldung.samplebeaninjectionypes; + +import org.springframework.beans.factory.annotation.Autowired; + +public class BankAccountWithConstructorInjection { + private BankAccountService bankAccountService; + + @Autowired + public BankAccountWithConstructorInjection(BankAccountService service) { + this.bankAccountService = service; + } + + public AccountDetails openAccount(Long accountNumber, String accountType, String owner) { + return bankAccountService.openAccount(accountNumber, accountType, owner); + } + +} diff --git a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithSetterInjection.java b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithSetterInjection.java new file mode 100644 index 0000000000..69c1fec4cc --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithSetterInjection.java @@ -0,0 +1,22 @@ +package com.baeldung.samplebeaninjectionypes; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; + +public class BankAccountWithSetterInjection { + + private BankAccountService bankAccountService; + + public BankAccountWithSetterInjection(BankAccountService service) { + this.bankAccountService = service; + } + + @Autowired + public void setBankAccountService(BankAccountService bankAccountService) { + this.bankAccountService = bankAccountService; + } + + public AccountDetails openAccount(Long accountNumber, String accountType, String owner) { + return bankAccountService.openAccount(accountNumber, accountType, owner); + } +} diff --git a/spring-core/src/main/resources/samplebeaninjectiontypes-context.xml b/spring-core/src/main/resources/samplebeaninjectiontypes-context.xml new file mode 100644 index 0000000000..307abd508e --- /dev/null +++ b/spring-core/src/main/resources/samplebeaninjectiontypes-context.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-core/src/test/java/com/baeldung/samplebeaninjectiontypes/SampleBeanInjectionTest.java b/spring-core/src/test/java/com/baeldung/samplebeaninjectiontypes/SampleBeanInjectionTest.java new file mode 100644 index 0000000000..f054a89a85 --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/samplebeaninjectiontypes/SampleBeanInjectionTest.java @@ -0,0 +1,40 @@ +package com.baeldung.samplebeaninjectiontypes; + +import com.baeldung.dependencyinjectiontypes.ArticleWithSetterInjection; +import com.baeldung.samplebeaninjectionypes.AccountDetails; +import com.baeldung.samplebeaninjectionypes.BankAccountWithConstructorInjection; +import com.baeldung.samplebeaninjectionypes.BankAccountWithSetterInjection; +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import static org.junit.Assert.assertTrue; + +public class SampleBeanInjectionTest { + + @Test + public void testSetterInjectionValid() { + + ApplicationContext context = new ClassPathXmlApplicationContext("samplebeaninjectiontypes-context.xml"); + BankAccountWithSetterInjection bankAccountWithSetterInjection = (BankAccountWithSetterInjection) context.getBean("bankAccountWithSetterInjection"); + + String owner = "John Doe"; + AccountDetails accountDetails = bankAccountWithSetterInjection.openAccount(12345L,"Savings",owner); + + assertTrue(accountDetails.getAccountName().equals(owner)); + + } + + @Test + public void testConstructorInjectionValid() { + + ApplicationContext context = new ClassPathXmlApplicationContext("samplebeaninjectiontypes-context.xml"); + BankAccountWithConstructorInjection bankAccountWithConstructorInjection = (BankAccountWithConstructorInjection) context.getBean("bankAccountWithConstructorInjectionBean"); + + String owner = "John Doe"; + AccountDetails accountDetails = bankAccountWithConstructorInjection.openAccount(12345L,"Savings",owner); + + assertTrue(accountDetails.getAccountName().equals(owner)); + } +} From f12497c18beb7e1156d3143a7d73daab469a4445 Mon Sep 17 00:00:00 2001 From: Raksha Rao Date: Sat, 27 Jan 2018 14:28:19 +0530 Subject: [PATCH 2/7] test case minor changes --- .../SampleBeanInjectionTest.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/spring-core/src/test/java/com/baeldung/samplebeaninjectiontypes/SampleBeanInjectionTest.java b/spring-core/src/test/java/com/baeldung/samplebeaninjectiontypes/SampleBeanInjectionTest.java index f054a89a85..fb7234e5c5 100644 --- a/spring-core/src/test/java/com/baeldung/samplebeaninjectiontypes/SampleBeanInjectionTest.java +++ b/spring-core/src/test/java/com/baeldung/samplebeaninjectiontypes/SampleBeanInjectionTest.java @@ -4,6 +4,7 @@ import com.baeldung.dependencyinjectiontypes.ArticleWithSetterInjection; import com.baeldung.samplebeaninjectionypes.AccountDetails; import com.baeldung.samplebeaninjectionypes.BankAccountWithConstructorInjection; import com.baeldung.samplebeaninjectionypes.BankAccountWithSetterInjection; +import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; @@ -12,11 +13,16 @@ import org.springframework.context.support.ClassPathXmlApplicationContext; import static org.junit.Assert.assertTrue; public class SampleBeanInjectionTest { + ApplicationContext context; + + @Before + public void before(){ + context = new ClassPathXmlApplicationContext("dependencyinjectiontypes-context.xml"); + } @Test - public void testSetterInjectionValid() { + public void givenAutowiredAnnotation_WhenSetOnSetter_ThenDependencyValid() { - ApplicationContext context = new ClassPathXmlApplicationContext("samplebeaninjectiontypes-context.xml"); BankAccountWithSetterInjection bankAccountWithSetterInjection = (BankAccountWithSetterInjection) context.getBean("bankAccountWithSetterInjection"); String owner = "John Doe"; @@ -27,9 +33,8 @@ public class SampleBeanInjectionTest { } @Test - public void testConstructorInjectionValid() { + public void givenAutowiredAnnotation_WhenSetOnConstructor_ThenDependencyValid() { - ApplicationContext context = new ClassPathXmlApplicationContext("samplebeaninjectiontypes-context.xml"); BankAccountWithConstructorInjection bankAccountWithConstructorInjection = (BankAccountWithConstructorInjection) context.getBean("bankAccountWithConstructorInjectionBean"); String owner = "John Doe"; From 2f31b4a8cc1d996329fbf0b8daa5a78cc2f286f7 Mon Sep 17 00:00:00 2001 From: Raksha Rao Date: Mon, 5 Feb 2018 11:09:34 +0530 Subject: [PATCH 3/7] classloader example --- .../classloader/SampleClassLoader.java | 22 +++++++++++++++++++ .../classloader/SampleClassLoaderTest.java | 15 +++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/classloader/SampleClassLoader.java create mode 100644 core-java/src/test/java/com/baeldung/classloader/SampleClassLoaderTest.java diff --git a/core-java/src/main/java/com/baeldung/classloader/SampleClassLoader.java b/core-java/src/main/java/com/baeldung/classloader/SampleClassLoader.java new file mode 100644 index 0000000000..ba858b62d3 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/classloader/SampleClassLoader.java @@ -0,0 +1,22 @@ +package com.baeldung.classloader; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; + +public class SampleClassLoader { + + public void loadClass() throws ClassNotFoundException { + + System.out.println("Classloader of this class:"+SampleClassLoader.class.getClassLoader()); + + Class.forName("com.baeldung.classloader.SampleClassLoader", true + , SampleClassLoader.class.getClassLoader().getParent()); + + } + + +} diff --git a/core-java/src/test/java/com/baeldung/classloader/SampleClassLoaderTest.java b/core-java/src/test/java/com/baeldung/classloader/SampleClassLoaderTest.java new file mode 100644 index 0000000000..60d0b4d75b --- /dev/null +++ b/core-java/src/test/java/com/baeldung/classloader/SampleClassLoaderTest.java @@ -0,0 +1,15 @@ +package com.baeldung.classloader; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class SampleClassLoaderTest { + @Test(expected = ClassNotFoundException.class) + public void givenAppClassLoader_whenParentClassLoader_thenClassNotFoundException() throws Exception { + SampleClassLoader sampleClassLoader = (SampleClassLoader) Class.forName(SampleClassLoader.class.getName()).newInstance(); + sampleClassLoader.loadClass(); + + } + +} \ No newline at end of file From 20b8dbffc4a3aa1b1b27d724c230a10da8bc70cf Mon Sep 17 00:00:00 2001 From: Raksha Rao Date: Mon, 5 Feb 2018 15:45:51 +0530 Subject: [PATCH 4/7] sample class loader --- .../baeldung/classloader/SampleClassLoader.java | 17 +++++++++-------- .../classloader/SampleClassLoaderTest.java | 1 - 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/classloader/SampleClassLoader.java b/core-java/src/main/java/com/baeldung/classloader/SampleClassLoader.java index ba858b62d3..b300e3d0ab 100644 --- a/core-java/src/main/java/com/baeldung/classloader/SampleClassLoader.java +++ b/core-java/src/main/java/com/baeldung/classloader/SampleClassLoader.java @@ -1,22 +1,23 @@ package com.baeldung.classloader; +import com.sun.javafx.util.Logging; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; +import java.util.ArrayList; public class SampleClassLoader { - public void loadClass() throws ClassNotFoundException { - - System.out.println("Classloader of this class:"+SampleClassLoader.class.getClassLoader()); - - Class.forName("com.baeldung.classloader.SampleClassLoader", true - , SampleClassLoader.class.getClassLoader().getParent()); - - } + public void loadClass() throws ClassNotFoundException { + System.out.println("Classloader of this class:" + SampleClassLoader.class.getClassLoader()); + System.out.println("Classloader of Logging:" + Logging.class.getClassLoader()); + System.out.println("Classloader of ArrayList:" + ArrayList.class.getClassLoader()); + Class.forName("com.baeldung.classloader.SampleClassLoader", true, SampleClassLoader.class.getClassLoader().getParent()); + } } diff --git a/core-java/src/test/java/com/baeldung/classloader/SampleClassLoaderTest.java b/core-java/src/test/java/com/baeldung/classloader/SampleClassLoaderTest.java index 60d0b4d75b..aea5611553 100644 --- a/core-java/src/test/java/com/baeldung/classloader/SampleClassLoaderTest.java +++ b/core-java/src/test/java/com/baeldung/classloader/SampleClassLoaderTest.java @@ -11,5 +11,4 @@ public class SampleClassLoaderTest { sampleClassLoader.loadClass(); } - } \ No newline at end of file From 91dedcc9cb07ac0c74de50c44c557744c10b449e Mon Sep 17 00:00:00 2001 From: Raksha Rao Date: Mon, 5 Feb 2018 16:36:21 +0530 Subject: [PATCH 5/7] remove unnecessary sample files --- .../AccountDetails.java | 40 ----------------- .../BankAccountApplication.java | 19 -------- .../BankAccountService.java | 9 ---- .../BankAccountWithConstructorInjection.java | 17 ------- .../BankAccountWithSetterInjection.java | 22 --------- .../SampleBeanInjectionTest.java | 45 ------------------- 6 files changed, 152 deletions(-) delete mode 100644 spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/AccountDetails.java delete mode 100644 spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountApplication.java delete mode 100644 spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountService.java delete mode 100644 spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithConstructorInjection.java delete mode 100644 spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithSetterInjection.java delete mode 100644 spring-core/src/test/java/com/baeldung/samplebeaninjectiontypes/SampleBeanInjectionTest.java diff --git a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/AccountDetails.java b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/AccountDetails.java deleted file mode 100644 index 2e4eb3b894..0000000000 --- a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/AccountDetails.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.baeldung.samplebeaninjectionypes; - -public class AccountDetails { - - private Long accountNumber; - - private String accountType; - - private String accountName; - - public AccountDetails(Long accountNumber, String accountType, String accountName) { - this.accountNumber = accountNumber; - this.accountType = accountType; - this.accountName = accountName; - } - - public Long getAccountNumber() { - return accountNumber; - } - - public void setAccountNumber(Long accountNumber) { - this.accountNumber = accountNumber; - } - - public String getAccountType() { - return accountType; - } - - public void setAccountType(String accountType) { - this.accountType = accountType; - } - - public String getAccountName() { - return accountName; - } - - public void setAccountName(String accountName) { - this.accountName = accountName; - } -} diff --git a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountApplication.java b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountApplication.java deleted file mode 100644 index 466255fd2e..0000000000 --- a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountApplication.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.samplebeaninjectionypes; - -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -public class BankAccountApplication { - - - public static void main(String[] args) { - ApplicationContext context = new ClassPathXmlApplicationContext("samplebeaninjectiontypes-context.xml"); - BankAccountWithSetterInjection bankAccountWithSetterInjection = (BankAccountWithSetterInjection) context.getBean("bankAccountWithSetterInjectionBean"); - - bankAccountWithSetterInjection.openAccount(12345L,"Savings","John Doe"); - - BankAccountWithConstructorInjection bankAccountWithConstructorInjection = (BankAccountWithConstructorInjection) context.getBean("bankAccountWithConstructorInjectionBean"); - bankAccountWithSetterInjection.openAccount(12345L,"Savings","John Doe"); - - } -} diff --git a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountService.java b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountService.java deleted file mode 100644 index 0f62db3655..0000000000 --- a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountService.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.samplebeaninjectionypes; - -public class BankAccountService { - - public AccountDetails openAccount(Long accountNumber, String accountType, String owner) { - AccountDetails accountDetails = new AccountDetails(accountNumber,accountType,owner); - return accountDetails; - } -} diff --git a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithConstructorInjection.java b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithConstructorInjection.java deleted file mode 100644 index 1bc75d15e0..0000000000 --- a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithConstructorInjection.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.samplebeaninjectionypes; - -import org.springframework.beans.factory.annotation.Autowired; - -public class BankAccountWithConstructorInjection { - private BankAccountService bankAccountService; - - @Autowired - public BankAccountWithConstructorInjection(BankAccountService service) { - this.bankAccountService = service; - } - - public AccountDetails openAccount(Long accountNumber, String accountType, String owner) { - return bankAccountService.openAccount(accountNumber, accountType, owner); - } - -} diff --git a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithSetterInjection.java b/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithSetterInjection.java deleted file mode 100644 index 69c1fec4cc..0000000000 --- a/spring-core/src/main/java/com/baeldung/samplebeaninjectionypes/BankAccountWithSetterInjection.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.samplebeaninjectionypes; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; - -public class BankAccountWithSetterInjection { - - private BankAccountService bankAccountService; - - public BankAccountWithSetterInjection(BankAccountService service) { - this.bankAccountService = service; - } - - @Autowired - public void setBankAccountService(BankAccountService bankAccountService) { - this.bankAccountService = bankAccountService; - } - - public AccountDetails openAccount(Long accountNumber, String accountType, String owner) { - return bankAccountService.openAccount(accountNumber, accountType, owner); - } -} diff --git a/spring-core/src/test/java/com/baeldung/samplebeaninjectiontypes/SampleBeanInjectionTest.java b/spring-core/src/test/java/com/baeldung/samplebeaninjectiontypes/SampleBeanInjectionTest.java deleted file mode 100644 index fb7234e5c5..0000000000 --- a/spring-core/src/test/java/com/baeldung/samplebeaninjectiontypes/SampleBeanInjectionTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.baeldung.samplebeaninjectiontypes; - -import com.baeldung.dependencyinjectiontypes.ArticleWithSetterInjection; -import com.baeldung.samplebeaninjectionypes.AccountDetails; -import com.baeldung.samplebeaninjectionypes.BankAccountWithConstructorInjection; -import com.baeldung.samplebeaninjectionypes.BankAccountWithSetterInjection; -import org.junit.Before; -import org.junit.Test; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -import static org.junit.Assert.assertTrue; - -public class SampleBeanInjectionTest { - ApplicationContext context; - - @Before - public void before(){ - context = new ClassPathXmlApplicationContext("dependencyinjectiontypes-context.xml"); - } - - @Test - public void givenAutowiredAnnotation_WhenSetOnSetter_ThenDependencyValid() { - - BankAccountWithSetterInjection bankAccountWithSetterInjection = (BankAccountWithSetterInjection) context.getBean("bankAccountWithSetterInjection"); - - String owner = "John Doe"; - AccountDetails accountDetails = bankAccountWithSetterInjection.openAccount(12345L,"Savings",owner); - - assertTrue(accountDetails.getAccountName().equals(owner)); - - } - - @Test - public void givenAutowiredAnnotation_WhenSetOnConstructor_ThenDependencyValid() { - - BankAccountWithConstructorInjection bankAccountWithConstructorInjection = (BankAccountWithConstructorInjection) context.getBean("bankAccountWithConstructorInjectionBean"); - - String owner = "John Doe"; - AccountDetails accountDetails = bankAccountWithConstructorInjection.openAccount(12345L,"Savings",owner); - - assertTrue(accountDetails.getAccountName().equals(owner)); - } -} From f7518c0c052a8bc76e25651628c481ea33603bab Mon Sep 17 00:00:00 2001 From: Raksha Rao Date: Mon, 5 Feb 2018 16:39:20 +0530 Subject: [PATCH 6/7] remove xml file --- .../samplebeaninjectiontypes-context.xml | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 spring-core/src/main/resources/samplebeaninjectiontypes-context.xml diff --git a/spring-core/src/main/resources/samplebeaninjectiontypes-context.xml b/spring-core/src/main/resources/samplebeaninjectiontypes-context.xml deleted file mode 100644 index 307abd508e..0000000000 --- a/spring-core/src/main/resources/samplebeaninjectiontypes-context.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file From 12a311083c13a24ba263ef3f8ce12331b0f18a61 Mon Sep 17 00:00:00 2001 From: Raksha Rao Date: Mon, 19 Feb 2018 01:50:24 +0530 Subject: [PATCH 7/7] Custom class loader example --- .../classloader/CustomClassLoader.java | 29 +++++++++++++++++++ .../classloader/PrintClassLoader.java | 22 ++++++++++++++ .../classloader/SampleClassLoader.java | 23 --------------- .../classloader/CustomClassLoaderTest.java | 23 +++++++++++++++ .../classloader/PrintClassLoaderTest.java | 14 +++++++++ .../classloader/SampleClassLoaderTest.java | 14 --------- 6 files changed, 88 insertions(+), 37 deletions(-) create mode 100644 core-java/src/main/java/com/baeldung/classloader/CustomClassLoader.java create mode 100644 core-java/src/main/java/com/baeldung/classloader/PrintClassLoader.java delete mode 100644 core-java/src/main/java/com/baeldung/classloader/SampleClassLoader.java create mode 100644 core-java/src/test/java/com/baeldung/classloader/CustomClassLoaderTest.java create mode 100644 core-java/src/test/java/com/baeldung/classloader/PrintClassLoaderTest.java delete mode 100644 core-java/src/test/java/com/baeldung/classloader/SampleClassLoaderTest.java diff --git a/core-java/src/main/java/com/baeldung/classloader/CustomClassLoader.java b/core-java/src/main/java/com/baeldung/classloader/CustomClassLoader.java new file mode 100644 index 0000000000..c44e863776 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/classloader/CustomClassLoader.java @@ -0,0 +1,29 @@ +package com.baeldung.classloader; + +import java.io.*; + +public class CustomClassLoader extends ClassLoader { + + + public Class getClass(String name) throws ClassNotFoundException { + byte[] b = loadClassFromFile(name); + return defineClass(name, b, 0, b.length); + } + + private byte[] loadClassFromFile(String fileName) { + InputStream inputStream = getClass().getClassLoader().getResourceAsStream( + fileName.replace('.', File.separatorChar) + ".class"); + byte[] buffer; + ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); + int nextValue = 0; + try { + while ( (nextValue = inputStream.read()) != -1 ) { + byteStream.write(nextValue); + } + } catch (IOException e) { + e.printStackTrace(); + } + buffer = byteStream.toByteArray(); + return buffer; + } +} diff --git a/core-java/src/main/java/com/baeldung/classloader/PrintClassLoader.java b/core-java/src/main/java/com/baeldung/classloader/PrintClassLoader.java new file mode 100644 index 0000000000..09ee68bf6e --- /dev/null +++ b/core-java/src/main/java/com/baeldung/classloader/PrintClassLoader.java @@ -0,0 +1,22 @@ +package com.baeldung.classloader; + +import com.sun.javafx.util.Logging; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; + +public class PrintClassLoader { + + public void printClassLoaders() throws ClassNotFoundException { + + System.out.println("Classloader of this class:" + PrintClassLoader.class.getClassLoader()); + System.out.println("Classloader of Logging:" + Logging.class.getClassLoader()); + System.out.println("Classloader of ArrayList:" + ArrayList.class.getClassLoader()); + + } +} diff --git a/core-java/src/main/java/com/baeldung/classloader/SampleClassLoader.java b/core-java/src/main/java/com/baeldung/classloader/SampleClassLoader.java deleted file mode 100644 index b300e3d0ab..0000000000 --- a/core-java/src/main/java/com/baeldung/classloader/SampleClassLoader.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.classloader; - -import com.sun.javafx.util.Logging; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; -import java.util.ArrayList; - -public class SampleClassLoader { - - public void loadClass() throws ClassNotFoundException { - - System.out.println("Classloader of this class:" + SampleClassLoader.class.getClassLoader()); - System.out.println("Classloader of Logging:" + Logging.class.getClassLoader()); - System.out.println("Classloader of ArrayList:" + ArrayList.class.getClassLoader()); - - Class.forName("com.baeldung.classloader.SampleClassLoader", true, SampleClassLoader.class.getClassLoader().getParent()); - } -} diff --git a/core-java/src/test/java/com/baeldung/classloader/CustomClassLoaderTest.java b/core-java/src/test/java/com/baeldung/classloader/CustomClassLoaderTest.java new file mode 100644 index 0000000000..9f3c751805 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/classloader/CustomClassLoaderTest.java @@ -0,0 +1,23 @@ +package com.baeldung.classloader; + +import org.junit.Test; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +public class CustomClassLoaderTest { + + @Test + public void customLoader() throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException { + + CustomClassLoader customClassLoader = new CustomClassLoader(); + Class c = customClassLoader.getClass(PrintClassLoader.class.getName()); + + Object ob = c.newInstance(); + + Method md = c.getMethod("printClassLoaders"); + md.invoke(ob); + + } + +} diff --git a/core-java/src/test/java/com/baeldung/classloader/PrintClassLoaderTest.java b/core-java/src/test/java/com/baeldung/classloader/PrintClassLoaderTest.java new file mode 100644 index 0000000000..f44a5cef09 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/classloader/PrintClassLoaderTest.java @@ -0,0 +1,14 @@ +package com.baeldung.classloader; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class PrintClassLoaderTest { + @Test(expected = ClassNotFoundException.class) + public void givenAppClassLoader_whenParentClassLoader_thenClassNotFoundException() throws Exception { + PrintClassLoader sampleClassLoader = (PrintClassLoader) Class.forName(PrintClassLoader.class.getName()).newInstance(); + sampleClassLoader.printClassLoaders(); + Class.forName(PrintClassLoader.class.getName(), true, PrintClassLoader.class.getClassLoader().getParent()); + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/classloader/SampleClassLoaderTest.java b/core-java/src/test/java/com/baeldung/classloader/SampleClassLoaderTest.java deleted file mode 100644 index aea5611553..0000000000 --- a/core-java/src/test/java/com/baeldung/classloader/SampleClassLoaderTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.classloader; - -import org.junit.Test; - -import static org.junit.Assert.*; - -public class SampleClassLoaderTest { - @Test(expected = ClassNotFoundException.class) - public void givenAppClassLoader_whenParentClassLoader_thenClassNotFoundException() throws Exception { - SampleClassLoader sampleClassLoader = (SampleClassLoader) Class.forName(SampleClassLoader.class.getName()).newInstance(); - sampleClassLoader.loadClass(); - - } -} \ No newline at end of file