diff --git a/pom.xml b/pom.xml index e2c6a36b..f420f63b 100644 --- a/pom.xml +++ b/pom.xml @@ -14,14 +14,14 @@ org.springframework.boot spring-boot-starter-parent - 2.0.0.M1 + 2.1.0.RELEASE UTF-8 UTF-8 - 1.8 + 11 @@ -46,43 +46,7 @@ - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - - - - spring-snapshots - Spring Snapshots - https://repo.spring.io/snapshot - - true - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - diff --git a/src/main/java/guru/springframework/DiDemoApplication.java b/src/main/java/guru/springframework/DiDemoApplication.java index 9e42add3..002501b7 100644 --- a/src/main/java/guru/springframework/DiDemoApplication.java +++ b/src/main/java/guru/springframework/DiDemoApplication.java @@ -1,12 +1,59 @@ package guru.springframework; +import guru.springframework.controllers.GreetingFactoryController; +import guru.springframework.controllers.MyController; +import guru.springframework.controllers.PropertyInjectedController; +import guru.springframework.controllers.SetterInjectedController; +import guru.springframework.examplebeans.FakeDataSource; +import guru.springframework.examplebeans.FakeJmsBroker; +import guru.springframework.scope.PrototypeBean; +import guru.springframework.scope.SingletonBean; +import guru.springframework.services.GreetingService; +import guru.springframework.services.GreetingServiceFactory; +import guru.springframework.services.GreetingServiceImpl; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; @SpringBootApplication public class DiDemoApplication { public static void main(String[] args) { - SpringApplication.run(DiDemoApplication.class, args); + ApplicationContext ctx = SpringApplication.run(DiDemoApplication.class, args); + + MyController controller = (MyController) ctx.getBean("myController"); + //System.out.println(controller.hello()); + FakeDataSource fakeDataSource = (FakeDataSource) ctx.getBean(FakeDataSource.class); + + //System.out.println(fakeDataSource.getUser()); + + FakeJmsBroker fakeJmsBroker = (FakeJmsBroker) ctx.getBean(FakeJmsBroker.class); + //System.out.println(fakeJmsBroker.getUsername()); + + System.out.println("property injection:"); + PropertyInjectedController propertyInjectedController=(PropertyInjectedController) ctx.getBean("propertyInjectedController"); + System.out.println(propertyInjectedController.sayHello()); + + SetterInjectedController setterInjectedController = (SetterInjectedController) ctx.getBean("setterInjectedController"); + System.out.println(setterInjectedController.sayHello()); + + GreetingFactoryController greetingFactoryController=(GreetingFactoryController) ctx.getBean("greetingFactoryController"); + System.out.println(greetingFactoryController.sayHello()); + + System.out.println("dependecy injection :"); + GreetingService greetingService=(GreetingServiceImpl) ctx.getBean("basePrimaryGreetingService"); + System.out.println(greetingService.sayGreeting()); + + System.out.println("///SCOPE"); + SingletonBean singletonBean1=ctx.getBean(SingletonBean.class); + System.out.println(singletonBean1.getMyScope()); + SingletonBean singletonBean2=ctx.getBean(SingletonBean.class); + System.out.println(singletonBean2.getMyScope()); + + PrototypeBean prototypeBean1=ctx.getBean(PrototypeBean.class); + System.out.println(prototypeBean1.getMyScope()); + PrototypeBean prototypeBean2=ctx.getBean(PrototypeBean.class); + System.out.println(prototypeBean2.getMyScope()); + } } diff --git a/src/main/java/guru/springframework/config/GreetingServiceConfig.java b/src/main/java/guru/springframework/config/GreetingServiceConfig.java new file mode 100644 index 00000000..b8066076 --- /dev/null +++ b/src/main/java/guru/springframework/config/GreetingServiceConfig.java @@ -0,0 +1,54 @@ +package guru.springframework.config; + +import guru.springframework.repository.GreetingRepository; +import guru.springframework.services.GreetingService; +import guru.springframework.services.GreetingServiceFactory; +import guru.springframework.services.GreetingServiceImpl; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.Profile; + +@Configuration +public class GreetingServiceConfig { + /** + * Her bir dile ait greeting service'leri burada ayağa kaldırıyorum. + * Bunun için önce bir service factory sınıfından bean yaratıyorum. + * daha sonra bu bean'in createService methodu ile her dile uygun bir service yaratıyorum. + * @param repository + * @return + */ + + @Bean + GreetingServiceFactory greetingServiceFactory(GreetingRepository repository){ + System.out.println("this repo works"); + return new GreetingServiceFactory(repository); + } + + @Bean + @Primary + @Profile({"default", "en"}) + GreetingService primaryGreetingService(GreetingServiceFactory greetingServiceFactory){ + return greetingServiceFactory.createGreetingService("en"); + } + + @Bean + @Primary + @Profile("es") + GreetingService primarySpanishGreetingService(GreetingServiceFactory greetingServiceFactory){ + return greetingServiceFactory.createGreetingService("es"); + } + + @Bean + @Primary + @Profile("de") + GreetingService primaryGermanGreetingService(GreetingServiceFactory greetingServiceFactory){ + return greetingServiceFactory.createGreetingService("de"); + } + + //repoyu kendisi bağlıyor annotation ile + @Bean(name = "basePrimaryGreetingService") + GreetingService basePrimaryGreetingService(GreetingRepository repository){ + return new GreetingServiceImpl(repository); + } +} diff --git a/src/main/java/guru/springframework/config/PropertyConfig.java b/src/main/java/guru/springframework/config/PropertyConfig.java new file mode 100644 index 00000000..1a62625b --- /dev/null +++ b/src/main/java/guru/springframework/config/PropertyConfig.java @@ -0,0 +1,63 @@ +package guru.springframework.config; + +import guru.springframework.examplebeans.FakeDataSource; +import guru.springframework.examplebeans.FakeJmsBroker; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.context.annotation.PropertySources; +import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; +import org.springframework.core.env.Environment; + +@Configuration +//@PropertySource({"classpath:datasource.properties", "classpath:jms.properties"}) +public class PropertyConfig { + + + @Value("${guru.username}") + String user; + + @Value("${guru.password}") + String password; + + @Value("${guru.dburl}") + String url; + + @Value("${guru.jms.username}") + String jmsUsername; + + @Value("${guru.jms.password}") + String jmsPassoword; + + @Value("${guru.jms.url}") + String jmsUrl; + + @Bean + public FakeDataSource fakeDataSource(){ + FakeDataSource fakeDataSource = new FakeDataSource(); + fakeDataSource.setUser(user); + fakeDataSource.setPassword(password); + fakeDataSource.setUrl(url); + return fakeDataSource; + } + + @Bean + public FakeJmsBroker fakeJmsBroker(){ + FakeJmsBroker jmsBroker = new FakeJmsBroker(); + jmsBroker.setUsername(jmsUsername); + jmsBroker.setPassword(jmsPassoword); + jmsBroker.setUrl(jmsUrl); + return jmsBroker; + } + + /* + @Bean + public static PropertySourcesPlaceholderConfigurer properties(){ + PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer =new PropertySourcesPlaceholderConfigurer(); + return propertySourcesPlaceholderConfigurer; + } + + */ +} diff --git a/src/main/java/guru/springframework/controllers/ConstructorInjectedController.java b/src/main/java/guru/springframework/controllers/ConstructorInjectedController.java new file mode 100644 index 00000000..2f1b4b53 --- /dev/null +++ b/src/main/java/guru/springframework/controllers/ConstructorInjectedController.java @@ -0,0 +1,19 @@ +package guru.springframework.controllers; + +import guru.springframework.services.GreetingService; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Controller; + +@Controller +public class ConstructorInjectedController { + + private GreetingService greetingService; + + public ConstructorInjectedController(@Qualifier("constructorGreetingService") GreetingService greetingService) { + this.greetingService = greetingService; + } + + public String sayHello(){ + return greetingService.sayGreeting(); + } +} diff --git a/src/main/java/guru/springframework/controllers/GreetingFactoryController.java b/src/main/java/guru/springframework/controllers/GreetingFactoryController.java new file mode 100644 index 00000000..de1c1167 --- /dev/null +++ b/src/main/java/guru/springframework/controllers/GreetingFactoryController.java @@ -0,0 +1,19 @@ +package guru.springframework.controllers; + +import guru.springframework.services.GreetingService; +import guru.springframework.services.GreetingServiceFactory; +import org.springframework.stereotype.Controller; + +@Controller +public class GreetingFactoryController { + + private final GreetingService greetingService; + + public GreetingFactoryController(GreetingService greetingService) { + this.greetingService = greetingService; + } + + public String sayHello(){ + return greetingService.sayGreeting(); + } +} diff --git a/src/main/java/guru/springframework/controllers/MyController.java b/src/main/java/guru/springframework/controllers/MyController.java new file mode 100644 index 00000000..b574991d --- /dev/null +++ b/src/main/java/guru/springframework/controllers/MyController.java @@ -0,0 +1,20 @@ +package guru.springframework.controllers; + +import guru.springframework.services.GreetingService; +import org.springframework.stereotype.Controller; + +@Controller +public class MyController { + + private GreetingService greetingService; + + public MyController(GreetingService greetingService) { + this.greetingService = greetingService; + } + + public String hello(){ + System.out.println("Hello!!! "); + + return greetingService.sayGreeting(); + } +} diff --git a/src/main/java/guru/springframework/controllers/PropertyInjectedController.java b/src/main/java/guru/springframework/controllers/PropertyInjectedController.java new file mode 100644 index 00000000..ed247297 --- /dev/null +++ b/src/main/java/guru/springframework/controllers/PropertyInjectedController.java @@ -0,0 +1,20 @@ +package guru.springframework.controllers; + +import guru.springframework.services.GreetingService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Controller; + + +@Controller +public class PropertyInjectedController { + + @Autowired + @Qualifier("basePrimaryGreetingService") + public GreetingService greetingServiceImpl; + + public String sayHello(){ + return greetingServiceImpl.sayGreeting(); + } + +} diff --git a/src/main/java/guru/springframework/controllers/SetterInjectedController.java b/src/main/java/guru/springframework/controllers/SetterInjectedController.java new file mode 100644 index 00000000..2ddf358b --- /dev/null +++ b/src/main/java/guru/springframework/controllers/SetterInjectedController.java @@ -0,0 +1,20 @@ +package guru.springframework.controllers; + +import guru.springframework.services.GreetingService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Controller; + +@Controller +public class SetterInjectedController { + private GreetingService greetingService; + + public String sayHello(){ + return greetingService.sayGreeting(); + } + + @Autowired + public void setGreetingService(@Qualifier("setterGreetingService") GreetingService greetingService) { + this.greetingService = greetingService; + } +} diff --git a/src/main/java/guru/springframework/examplebeans/FakeDataSource.java b/src/main/java/guru/springframework/examplebeans/FakeDataSource.java new file mode 100644 index 00000000..d0223825 --- /dev/null +++ b/src/main/java/guru/springframework/examplebeans/FakeDataSource.java @@ -0,0 +1,31 @@ +package guru.springframework.examplebeans; + +public class FakeDataSource { + private String user; + private String password; + private String url; + + public String getUser() { + return user; + } + + public void setUser(String user) { + this.user = user; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } +} diff --git a/src/main/java/guru/springframework/examplebeans/FakeJmsBroker.java b/src/main/java/guru/springframework/examplebeans/FakeJmsBroker.java new file mode 100644 index 00000000..8a2f4a32 --- /dev/null +++ b/src/main/java/guru/springframework/examplebeans/FakeJmsBroker.java @@ -0,0 +1,32 @@ +package guru.springframework.examplebeans; + +public class FakeJmsBroker { + + private String username; + private String password; + private String url; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } +} diff --git a/src/main/java/guru/springframework/repository/GreetingRepository.java b/src/main/java/guru/springframework/repository/GreetingRepository.java new file mode 100644 index 00000000..3250b168 --- /dev/null +++ b/src/main/java/guru/springframework/repository/GreetingRepository.java @@ -0,0 +1,12 @@ +package guru.springframework.repository; + +public interface GreetingRepository { + + String getEnglishGreeting(); + + String getSpanishGreeting(); + + String getGermanGreeting(); + + String getBaseGreeting(); +} diff --git a/src/main/java/guru/springframework/repository/GreetingRepositoryImpl.java b/src/main/java/guru/springframework/repository/GreetingRepositoryImpl.java new file mode 100644 index 00000000..3b248064 --- /dev/null +++ b/src/main/java/guru/springframework/repository/GreetingRepositoryImpl.java @@ -0,0 +1,31 @@ +package guru.springframework.repository; + +import org.springframework.stereotype.Component; + +@Component +public class GreetingRepositoryImpl implements GreetingRepository { + + public static final String HELLO_GURUS = "Hello good day"; + + @Override + public String getEnglishGreeting() { + return "Hello - Primary Greeting service"; + } + + @Override + public String getSpanishGreeting() { + return "Servicio de Saludo Primario"; + } + + @Override + public String getGermanGreeting() { + + return "Primärer Grußdienst"; + + } + + @Override + public String getBaseGreeting() { + return HELLO_GURUS; + } +} diff --git a/src/main/java/guru/springframework/scope/PrototypeBean.java b/src/main/java/guru/springframework/scope/PrototypeBean.java new file mode 100644 index 00000000..593b2a72 --- /dev/null +++ b/src/main/java/guru/springframework/scope/PrototypeBean.java @@ -0,0 +1,17 @@ +package guru.springframework.scope; + +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) +@Component +public class PrototypeBean { + public PrototypeBean() { + System.out.println("I'm prototype bean"); + } + + public String getMyScope(){ + return "this is prototype scope"; + } +} diff --git a/src/main/java/guru/springframework/scope/SingletonBean.java b/src/main/java/guru/springframework/scope/SingletonBean.java new file mode 100644 index 00000000..a069da1c --- /dev/null +++ b/src/main/java/guru/springframework/scope/SingletonBean.java @@ -0,0 +1,17 @@ +package guru.springframework.scope; + +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +@Component +public class SingletonBean { + + public SingletonBean() { + System.out.println("I'm creating singleton bean"); + } + + public String getMyScope(){ + return "singleton scope"; + } +} diff --git a/src/main/java/guru/springframework/services/ConstructorGreetingService.java b/src/main/java/guru/springframework/services/ConstructorGreetingService.java new file mode 100644 index 00000000..e7e7ae70 --- /dev/null +++ b/src/main/java/guru/springframework/services/ConstructorGreetingService.java @@ -0,0 +1,11 @@ +package guru.springframework.services; + +import org.springframework.stereotype.Service; + +@Service +public class ConstructorGreetingService implements GreetingService { + @Override + public String sayGreeting() { + return "Hello - I was injected via the constructor!!!"; + } +} diff --git a/src/main/java/guru/springframework/services/GreetingService.java b/src/main/java/guru/springframework/services/GreetingService.java new file mode 100644 index 00000000..11c0ed09 --- /dev/null +++ b/src/main/java/guru/springframework/services/GreetingService.java @@ -0,0 +1,6 @@ +package guru.springframework.services; + +public interface GreetingService { + + String sayGreeting(); +} diff --git a/src/main/java/guru/springframework/services/GreetingServiceFactory.java b/src/main/java/guru/springframework/services/GreetingServiceFactory.java new file mode 100644 index 00000000..e6de2219 --- /dev/null +++ b/src/main/java/guru/springframework/services/GreetingServiceFactory.java @@ -0,0 +1,27 @@ +package guru.springframework.services; + +import guru.springframework.repository.GreetingRepository; + +public class GreetingServiceFactory { + + private GreetingRepository greetingRepository; + + public GreetingServiceFactory(GreetingRepository greetingRepository) { + this.greetingRepository = greetingRepository; + } + + public GreetingService createGreetingService(String lang) { + + switch (lang){ + case "en": + return new PrimaryGreetingService(greetingRepository); + case "de": + return new PrimaryGermanGreetingService(greetingRepository); + case "es": + return new PrimarySpanishGreetingService(greetingRepository); + default: + return new PrimaryGreetingService(greetingRepository); + } + + } +} diff --git a/src/main/java/guru/springframework/services/GreetingServiceImpl.java b/src/main/java/guru/springframework/services/GreetingServiceImpl.java new file mode 100644 index 00000000..a123a9f8 --- /dev/null +++ b/src/main/java/guru/springframework/services/GreetingServiceImpl.java @@ -0,0 +1,17 @@ +package guru.springframework.services; + +import guru.springframework.repository.GreetingRepository; + +public class GreetingServiceImpl implements GreetingService { + + private final GreetingRepository repository; + + public GreetingServiceImpl(GreetingRepository repository) { + this.repository = repository; + } + + @Override + public String sayGreeting() { + return repository.getBaseGreeting(); + } +} diff --git a/src/main/java/guru/springframework/services/PrimaryGermanGreetingService.java b/src/main/java/guru/springframework/services/PrimaryGermanGreetingService.java new file mode 100644 index 00000000..6cc08c03 --- /dev/null +++ b/src/main/java/guru/springframework/services/PrimaryGermanGreetingService.java @@ -0,0 +1,17 @@ +package guru.springframework.services; + +import guru.springframework.repository.GreetingRepository; + +public class PrimaryGermanGreetingService implements GreetingService { + + private GreetingRepository greetingRepository; + + public PrimaryGermanGreetingService(GreetingRepository greetingRepository) { + this.greetingRepository = greetingRepository; + } + + @Override + public String sayGreeting() { + return greetingRepository.getGermanGreeting(); + } +} diff --git a/src/main/java/guru/springframework/services/PrimaryGreetingService.java b/src/main/java/guru/springframework/services/PrimaryGreetingService.java new file mode 100644 index 00000000..f5d61343 --- /dev/null +++ b/src/main/java/guru/springframework/services/PrimaryGreetingService.java @@ -0,0 +1,18 @@ +package guru.springframework.services; + +import guru.springframework.repository.GreetingRepository; + + +public class PrimaryGreetingService implements GreetingService { + + private GreetingRepository greetingRepository; + + public PrimaryGreetingService(GreetingRepository greetingRepository) { + this.greetingRepository = greetingRepository; + } + + @Override + public String sayGreeting() { + return greetingRepository.getEnglishGreeting(); + } +} diff --git a/src/main/java/guru/springframework/services/PrimarySpanishGreetingService.java b/src/main/java/guru/springframework/services/PrimarySpanishGreetingService.java new file mode 100644 index 00000000..c9e32681 --- /dev/null +++ b/src/main/java/guru/springframework/services/PrimarySpanishGreetingService.java @@ -0,0 +1,17 @@ +package guru.springframework.services; + +import guru.springframework.repository.GreetingRepository; + +public class PrimarySpanishGreetingService implements GreetingService { + + private GreetingRepository greetingRepository; + + public PrimarySpanishGreetingService(GreetingRepository greetingRepository) { + this.greetingRepository = greetingRepository; + } + + @Override + public String sayGreeting() { + return greetingRepository.getSpanishGreeting(); + } +} diff --git a/src/main/java/guru/springframework/services/SetterGreetingService.java b/src/main/java/guru/springframework/services/SetterGreetingService.java new file mode 100644 index 00000000..ebd8c453 --- /dev/null +++ b/src/main/java/guru/springframework/services/SetterGreetingService.java @@ -0,0 +1,12 @@ +package guru.springframework.services; + +import org.springframework.stereotype.Service; + +@Service +public class SetterGreetingService implements GreetingService { + + @Override + public String sayGreeting() { + return "Hello - I was injected by the setter"; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e69de29b..f763c158 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -0,0 +1,9 @@ +spring.profiles.active=en + +guru.jms.username=JMS Username +guru.jms.password=somepass +guru.jms.url=SomeURL + +guru.username=John +guru.password=somepass +guru.dburl=sdfasdffasdf \ No newline at end of file diff --git a/src/main/resources/datasource.properties b/src/main/resources/datasource.properties new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resources/example.yml b/src/main/resources/example.yml new file mode 100644 index 00000000..9a917f22 --- /dev/null +++ b/src/main/resources/example.yml @@ -0,0 +1,32 @@ +# this is comment + +name: Seyda + +names: #yorum satırı + - Ahmet + - Mehmet + - Hasan + +pound_sign: "#" + +book: + author: Seyda Özdemir + publisher: YKY + +truth: yes +another_truth: True +more_true: true +false: no #No, false, FALSE + +string_val: "Bu bir string dizisidir." + +colon_string: "my courses: spring boot'a giriş" + +include_new_lines: + sd asd asd + asd sad asd + asfdsf sdf sd f +ignore_new_lines: + this is + just one long + line \ No newline at end of file diff --git a/src/main/resources/jms.properties b/src/main/resources/jms.properties new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/src/main/resources/jms.properties @@ -0,0 +1 @@ + diff --git a/src/test/java/guru/springframework/controllers/ConstructorInjectedControllerTest.java b/src/test/java/guru/springframework/controllers/ConstructorInjectedControllerTest.java new file mode 100644 index 00000000..f7579cef --- /dev/null +++ b/src/test/java/guru/springframework/controllers/ConstructorInjectedControllerTest.java @@ -0,0 +1,25 @@ +package guru.springframework.controllers; + +import guru.springframework.repository.GreetingRepository; +import guru.springframework.repository.GreetingRepositoryImpl; +import guru.springframework.services.GreetingServiceImpl; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class ConstructorInjectedControllerTest { + private ConstructorInjectedController constructorInjectedController; + private GreetingRepository repository; + + @Before + public void setUp() throws Exception { + repository=new GreetingRepositoryImpl(); + this.constructorInjectedController = new ConstructorInjectedController(new GreetingServiceImpl(repository)); + } + + @Test + public void testGreeting() throws Exception { + assertEquals(GreetingRepositoryImpl.HELLO_GURUS, constructorInjectedController.sayHello()); + } +} \ No newline at end of file diff --git a/src/test/java/guru/springframework/controllers/PropertyInjectedControllerTest.java b/src/test/java/guru/springframework/controllers/PropertyInjectedControllerTest.java new file mode 100644 index 00000000..a365d088 --- /dev/null +++ b/src/test/java/guru/springframework/controllers/PropertyInjectedControllerTest.java @@ -0,0 +1,33 @@ +package guru.springframework.controllers; + +import guru.springframework.repository.GreetingRepository; +import guru.springframework.repository.GreetingRepositoryImpl; +import guru.springframework.services.GreetingServiceImpl; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class PropertyInjectedControllerTest { + + /** + * spring framework gibi davranarak ioc uygulamasını kendimiz gerçekleştiriyoruz. + * PropertyInjectedController'ın GreetingService'e ihtiyacı var ve biz bu + * dependency'i somut olarak GreetingServiceImpl() yaratarak veriyoruz. + * Bu sınıf bu somut nesneyi kullanıyor. + */ + private PropertyInjectedController propertyInjectedController; + private GreetingRepository repository; + + @Before + public void setUp() throws Exception { + repository=new GreetingRepositoryImpl(); + this.propertyInjectedController = new PropertyInjectedController(); + this.propertyInjectedController.greetingServiceImpl = new GreetingServiceImpl(repository); + } + + @Test + public void testGreeting() throws Exception { + assertEquals(GreetingRepositoryImpl.HELLO_GURUS, propertyInjectedController.sayHello()); + } +} \ No newline at end of file diff --git a/src/test/java/guru/springframework/controllers/SetterInjectedControllerTest.java b/src/test/java/guru/springframework/controllers/SetterInjectedControllerTest.java new file mode 100644 index 00000000..68f2a5c6 --- /dev/null +++ b/src/test/java/guru/springframework/controllers/SetterInjectedControllerTest.java @@ -0,0 +1,27 @@ +package guru.springframework.controllers; + +import guru.springframework.repository.GreetingRepository; +import guru.springframework.repository.GreetingRepositoryImpl; +import guru.springframework.services.GreetingServiceImpl; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class SetterInjectedControllerTest { + + private SetterInjectedController getterInjectedController; + private GreetingRepository repository; + + @Before + public void setUp() throws Exception { + repository=new GreetingRepositoryImpl(); + this.getterInjectedController = new SetterInjectedController(); + this.getterInjectedController.setGreetingService(new GreetingServiceImpl(repository)); + } + + @Test + public void testGreeting() throws Exception { + assertEquals(GreetingRepositoryImpl.HELLO_GURUS, getterInjectedController.sayHello()); + } +} \ No newline at end of file