From 27b815378c1c192cdfc176cbded2377d45367738 Mon Sep 17 00:00:00 2001 From: Cheng Date: Mon, 25 Dec 2017 15:40:39 +0800 Subject: [PATCH] evolve(demo1):dependency injection - constructor injection --- spring-demo-1/src/applicationContext.xml | 8 ++++++++ .../com/luv2code/springdemo/BaseballCoach.java | 13 +++++++++++++ .../src/com/luv2code/springdemo/Coach.java | 1 + .../com/luv2code/springdemo/FortuneService.java | 6 ++++++ .../luv2code/springdemo/HappyFortuneService.java | 9 +++++++++ .../com/luv2code/springdemo/HelloSpringApp.java | 1 + .../src/com/luv2code/springdemo/TrackCoach.java | 16 ++++++++++++++++ 7 files changed, 54 insertions(+) create mode 100644 spring-demo-1/src/com/luv2code/springdemo/FortuneService.java create mode 100644 spring-demo-1/src/com/luv2code/springdemo/HappyFortuneService.java diff --git a/spring-demo-1/src/applicationContext.xml b/spring-demo-1/src/applicationContext.xml index 07440aa..d8333c6 100644 --- a/spring-demo-1/src/applicationContext.xml +++ b/spring-demo-1/src/applicationContext.xml @@ -8,8 +8,16 @@ http://www.springframework.org/schema/context/spring-context.xsd"> + + + + + + + diff --git a/spring-demo-1/src/com/luv2code/springdemo/BaseballCoach.java b/spring-demo-1/src/com/luv2code/springdemo/BaseballCoach.java index 473e4d4..6aa6dcc 100644 --- a/spring-demo-1/src/com/luv2code/springdemo/BaseballCoach.java +++ b/spring-demo-1/src/com/luv2code/springdemo/BaseballCoach.java @@ -3,9 +3,22 @@ public class BaseballCoach implements Coach { + // define a private field for dependency + private FortuneService fortuneService; + + // define a constructor for dependency injection + public BaseballCoach(FortuneService theFortuneService) { + fortuneService = theFortuneService; + } + @Override public String getDailyWorkout() { return "Spend 30 minutes on batting practice"; } + @Override + public String getDailyFortune() { + return fortuneService.getFortune(); + } + } diff --git a/spring-demo-1/src/com/luv2code/springdemo/Coach.java b/spring-demo-1/src/com/luv2code/springdemo/Coach.java index 668c795..07bff05 100644 --- a/spring-demo-1/src/com/luv2code/springdemo/Coach.java +++ b/spring-demo-1/src/com/luv2code/springdemo/Coach.java @@ -4,4 +4,5 @@ public interface Coach { public String getDailyWorkout(); + public String getDailyFortune(); } diff --git a/spring-demo-1/src/com/luv2code/springdemo/FortuneService.java b/spring-demo-1/src/com/luv2code/springdemo/FortuneService.java new file mode 100644 index 0000000..0dee0fb --- /dev/null +++ b/spring-demo-1/src/com/luv2code/springdemo/FortuneService.java @@ -0,0 +1,6 @@ +package com.luv2code.springdemo; + +public interface FortuneService { + + public String getFortune(); +} diff --git a/spring-demo-1/src/com/luv2code/springdemo/HappyFortuneService.java b/spring-demo-1/src/com/luv2code/springdemo/HappyFortuneService.java new file mode 100644 index 0000000..67227ae --- /dev/null +++ b/spring-demo-1/src/com/luv2code/springdemo/HappyFortuneService.java @@ -0,0 +1,9 @@ +package com.luv2code.springdemo; + +public class HappyFortuneService implements FortuneService { + + @Override + public String getFortune() { + return "This a your lucky day"; + } +} diff --git a/spring-demo-1/src/com/luv2code/springdemo/HelloSpringApp.java b/spring-demo-1/src/com/luv2code/springdemo/HelloSpringApp.java index 8022961..987b2e9 100644 --- a/spring-demo-1/src/com/luv2code/springdemo/HelloSpringApp.java +++ b/spring-demo-1/src/com/luv2code/springdemo/HelloSpringApp.java @@ -14,6 +14,7 @@ public static void main(String[] args) { // call methods on bean System.out.println(theCoach.getDailyWorkout()); + System.out.println(theCoach.getDailyFortune()); // close the context context.close(); diff --git a/spring-demo-1/src/com/luv2code/springdemo/TrackCoach.java b/spring-demo-1/src/com/luv2code/springdemo/TrackCoach.java index 62a70ad..a60ae4d 100644 --- a/spring-demo-1/src/com/luv2code/springdemo/TrackCoach.java +++ b/spring-demo-1/src/com/luv2code/springdemo/TrackCoach.java @@ -2,9 +2,25 @@ public class TrackCoach implements Coach { + private FortuneService fortuneService; + + public TrackCoach() { + + } + + public TrackCoach(FortuneService fortuneService) { + super(); + this.fortuneService = fortuneService; + } + @Override public String getDailyWorkout() { return "Run a hard 5K"; } + @Override + public String getDailyFortune() { + return "Just do it: " + fortuneService.getFortune(); + } + }