From 963cc51a7a15b75b550108fe4e198cd65a274032 Mon Sep 17 00:00:00 2001 From: yasinb Date: Wed, 1 Mar 2017 19:46:53 +0530 Subject: [PATCH] yasin.bhojawala@gmail.com Evaluation article on Different Types of Bean Injection in Spring --- .../beaninjection/BeanConfiguration.java | 28 ++++++++++++++ .../com/baeldung/beaninjection/MainApp.java | 37 +++++++++++++++++++ .../beaninjection/domain/ConsoleLogger.java | 23 ++++++++++++ .../baeldung/beaninjection/domain/Logger.java | 6 +++ .../beaninjection/domain/LoggingHelper.java | 20 ++++++++++ .../src/main/resources/beaninjection.xml | 15 ++++++++ 6 files changed, 129 insertions(+) create mode 100644 spring-core/src/main/java/com/baeldung/beaninjection/BeanConfiguration.java create mode 100644 spring-core/src/main/java/com/baeldung/beaninjection/MainApp.java create mode 100644 spring-core/src/main/java/com/baeldung/beaninjection/domain/ConsoleLogger.java create mode 100644 spring-core/src/main/java/com/baeldung/beaninjection/domain/Logger.java create mode 100644 spring-core/src/main/java/com/baeldung/beaninjection/domain/LoggingHelper.java create mode 100644 spring-core/src/main/resources/beaninjection.xml diff --git a/spring-core/src/main/java/com/baeldung/beaninjection/BeanConfiguration.java b/spring-core/src/main/java/com/baeldung/beaninjection/BeanConfiguration.java new file mode 100644 index 0000000000..b040c3fb1c --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beaninjection/BeanConfiguration.java @@ -0,0 +1,28 @@ +package com.baeldung.beaninjection; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.beaninjection.domain.ConsoleLogger; +import com.baeldung.beaninjection.domain.Logger; + +@Configuration +@ComponentScan("com.baeldung.beaninjection") +public class BeanConfiguration { + + @Bean + public Logger logger() { + return new ConsoleLogger(); + } + + @Bean + public int maxChars() { + return 15; + } + + @Bean + public String messagePrefix(){ + return "JConfig: "; + } +} diff --git a/spring-core/src/main/java/com/baeldung/beaninjection/MainApp.java b/spring-core/src/main/java/com/baeldung/beaninjection/MainApp.java new file mode 100644 index 0000000000..b381dbd695 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beaninjection/MainApp.java @@ -0,0 +1,37 @@ +package com.baeldung.beaninjection; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import com.baeldung.beaninjection.domain.LoggingHelper; + +public class MainApp { + public static void main(String[] args) { + + LoggingHelper logHelper = loadFromJavaConfig(); + logHelper.logMessage("This is a log message"); + + logHelper = loadFromXmlConfig(); + logHelper.logMessage("This is another log message"); + } + + private static LoggingHelper loadFromJavaConfig() { + ApplicationContext context = new AnnotationConfigApplicationContext(BeanConfiguration.class); + + LoggingHelper loggingHelper = context.getBean(LoggingHelper.class); + ((ConfigurableApplicationContext)context).close(); + + return loggingHelper; + } + + private static LoggingHelper loadFromXmlConfig() { + ApplicationContext context = new ClassPathXmlApplicationContext("beaninjection.xml"); + + LoggingHelper loggingHelper = context.getBean(LoggingHelper.class); + ((ConfigurableApplicationContext)context).close(); + + return loggingHelper; + } +} diff --git a/spring-core/src/main/java/com/baeldung/beaninjection/domain/ConsoleLogger.java b/spring-core/src/main/java/com/baeldung/beaninjection/domain/ConsoleLogger.java new file mode 100644 index 0000000000..db16964646 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beaninjection/domain/ConsoleLogger.java @@ -0,0 +1,23 @@ +package com.baeldung.beaninjection.domain; + +import org.springframework.beans.factory.annotation.Autowired; + +public class ConsoleLogger implements Logger { + + private String messagePrefix; + private static final String DEFAULT_MESSAGE_PREFIX = "LOG: "; + + @Override + public void logMessage(String message, int maxChars) { + System.out.println(getMessagePrefix() + message.substring(0, maxChars)); + } + + private String getMessagePrefix(){ + return this.messagePrefix == null ? DEFAULT_MESSAGE_PREFIX : messagePrefix; + } + + @Autowired + public void setMessagePrefix(String messagePrefix){ + this.messagePrefix = messagePrefix; + } +} diff --git a/spring-core/src/main/java/com/baeldung/beaninjection/domain/Logger.java b/spring-core/src/main/java/com/baeldung/beaninjection/domain/Logger.java new file mode 100644 index 0000000000..d357225ffa --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beaninjection/domain/Logger.java @@ -0,0 +1,6 @@ +package com.baeldung.beaninjection.domain; + +public interface Logger { + + public void logMessage(String message, int maxChars); +} diff --git a/spring-core/src/main/java/com/baeldung/beaninjection/domain/LoggingHelper.java b/spring-core/src/main/java/com/baeldung/beaninjection/domain/LoggingHelper.java new file mode 100644 index 0000000000..aab3f3fa70 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beaninjection/domain/LoggingHelper.java @@ -0,0 +1,20 @@ +package com.baeldung.beaninjection.domain; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class LoggingHelper { + private Logger logger; + private int maxChars; + + @Autowired + public LoggingHelper(Logger logger, int maxChars) { + this.logger = logger; + this.maxChars = maxChars; + } + + public void logMessage(String message) { + logger.logMessage(message, maxChars); + } +} diff --git a/spring-core/src/main/resources/beaninjection.xml b/spring-core/src/main/resources/beaninjection.xml new file mode 100644 index 0000000000..b8b46a7854 --- /dev/null +++ b/spring-core/src/main/resources/beaninjection.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + +