Different Types of Bean Injection in Spring
This commit is contained in:
parent
0743dec07c
commit
ae47827879
|
@ -0,0 +1,8 @@
|
|||
package com.baeldung.beansinjectiontypes;
|
||||
|
||||
public class Cabriolet implements Car{
|
||||
|
||||
public void honk(){
|
||||
System.out.println("I'm a cabriolet!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
package com.baeldung.beansinjectiontypes;
|
||||
|
||||
public interface Car {
|
||||
|
||||
public void honk();
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
package com.baeldung.beansinjectiontypes;
|
||||
|
||||
public class DealershipTraditionalStyle {
|
||||
private Car car = new Sedan();
|
||||
|
||||
public Car getCar() {
|
||||
return car;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
package com.baeldung.beansinjectiontypes;
|
||||
|
||||
public class DealershipWithDependenciesInjection {
|
||||
private Car car;
|
||||
|
||||
public DealershipWithDependenciesInjection(Car car) {
|
||||
this.car = car;
|
||||
}
|
||||
|
||||
public Car getCar() {
|
||||
return car;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package com.baeldung.beansinjectiontypes;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class Sedan implements Car {
|
||||
public void honk(){
|
||||
System.out.println("I'm a sedan!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package com.baeldung.beansinjectiontypes.constructor;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import com.baeldung.beansinjectiontypes.Car;
|
||||
import com.baeldung.beansinjectiontypes.Sedan;
|
||||
|
||||
@Configuration(value="constructorConfig")
|
||||
public class Config {
|
||||
@Bean
|
||||
public Car car() {
|
||||
return new Sedan();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Dealership dealership() {
|
||||
return new Dealership(car());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package com.baeldung.beansinjectiontypes.constructor;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.baeldung.beansinjectiontypes.Car;
|
||||
|
||||
@Component(value="constructorDealership")
|
||||
public class Dealership {
|
||||
private Car car;
|
||||
|
||||
@Autowired
|
||||
public Dealership(Car car) {
|
||||
this.car = car;
|
||||
}
|
||||
|
||||
public Car getCar() {
|
||||
return car;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package com.baeldung.beansinjectiontypes.constructor;
|
||||
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
|
||||
public class HornCheckerFile {
|
||||
|
||||
public static void main(String[] args) {
|
||||
try (AnnotationConfigApplicationContext context =
|
||||
new AnnotationConfigApplicationContext(Config.class)) {
|
||||
Dealership dealership = (Dealership) context.getBean("dealership");
|
||||
|
||||
dealership.getCar().honk();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package com.baeldung.beansinjectiontypes.constructor;
|
||||
|
||||
import org.springframework.context.support.FileSystemXmlApplicationContext;
|
||||
|
||||
public class HornCheckerXML {
|
||||
|
||||
public static void main(String[] args) {
|
||||
try (FileSystemXmlApplicationContext context =
|
||||
new FileSystemXmlApplicationContext("src/main/resources/beansinjectiontypes-ctx.xml")) {
|
||||
Dealership dealership = (Dealership) context.getBean("constructorDealership");
|
||||
|
||||
dealership.getCar().honk();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package com.baeldung.beansinjectiontypes.setter;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import com.baeldung.beansinjectiontypes.Car;
|
||||
import com.baeldung.beansinjectiontypes.Sedan;
|
||||
|
||||
@Configuration(value="setterConfig")
|
||||
public class Config {
|
||||
@Bean
|
||||
public Car car() {
|
||||
return new Sedan();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Dealership dealership() {
|
||||
Dealership dealership = new Dealership();
|
||||
dealership.setCar(car());
|
||||
return dealership;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package com.baeldung.beansinjectiontypes.setter;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.baeldung.beansinjectiontypes.Car;
|
||||
|
||||
@Component(value="setterDealership")
|
||||
public class Dealership {
|
||||
private Car car;
|
||||
|
||||
@Autowired
|
||||
public void setCar(Car car) {
|
||||
this.car = car;
|
||||
}
|
||||
public Car getCar() {
|
||||
return car;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package com.baeldung.beansinjectiontypes.setter;
|
||||
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
|
||||
public class HornCheckerFile {
|
||||
|
||||
public static void main(String[] args) {
|
||||
try (AnnotationConfigApplicationContext context =
|
||||
new AnnotationConfigApplicationContext(Config.class)) {
|
||||
Dealership dealership = (Dealership) context.getBean("dealership");
|
||||
|
||||
dealership.getCar().honk();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package com.baeldung.beansinjectiontypes.setter;
|
||||
|
||||
import org.springframework.context.support.FileSystemXmlApplicationContext;
|
||||
|
||||
public class HornCheckerXML {
|
||||
|
||||
public static void main(String[] args) {
|
||||
try (FileSystemXmlApplicationContext context =
|
||||
new FileSystemXmlApplicationContext("src/main/resources/beansinjectiontypes-ctx.xml")) {
|
||||
Dealership dealership = (Dealership) context.getBean("setterDealership");
|
||||
|
||||
dealership.getCar().honk();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
|
||||
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
|
||||
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
|
||||
xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd">
|
||||
|
||||
<context:component-scan base-package="com.baeldung.beansinjectiontypes" />
|
||||
|
||||
</beans>
|
|
@ -0,0 +1,56 @@
|
|||
package com.baeldung.beansinjectiontypes;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.support.FileSystemXmlApplicationContext;
|
||||
|
||||
import com.baeldung.beansinjectiontypes.constructor.Config;
|
||||
import com.baeldung.beansinjectiontypes.constructor.Dealership;
|
||||
|
||||
public class BeansInjectionTypesIntegrationTest {
|
||||
|
||||
@Test
|
||||
public void configBean_WhenSetOnConstructor_ThenDependencyValid() {
|
||||
try (AnnotationConfigApplicationContext context =
|
||||
new AnnotationConfigApplicationContext(Config.class)) {
|
||||
Dealership dealership = (Dealership) context.getBean("dealership");
|
||||
|
||||
assertTrue(dealership.getCar() instanceof Sedan);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void configBean_WhenSetOnSetter_ThenDependencyValid() {
|
||||
try (AnnotationConfigApplicationContext context =
|
||||
new AnnotationConfigApplicationContext(com.baeldung.beansinjectiontypes.setter.Config.class)) {
|
||||
com.baeldung.beansinjectiontypes.setter.Dealership dealership =
|
||||
(com.baeldung.beansinjectiontypes.setter.Dealership) context.getBean("dealership");
|
||||
|
||||
assertTrue(dealership.getCar() instanceof Sedan);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void annotationAndXML_WhenSetOnSetter_ThenDependencyValid() {
|
||||
try (FileSystemXmlApplicationContext context =
|
||||
new FileSystemXmlApplicationContext("src/main/resources/beansinjectiontypes-ctx.xml")) {
|
||||
Dealership dealership = (Dealership) context.getBean("constructorDealership");
|
||||
|
||||
assertTrue(dealership.getCar() instanceof Sedan);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void annotationAndXML_WhenSetOnConstructor_ThenDependencyValid() {
|
||||
try (FileSystemXmlApplicationContext context =
|
||||
new FileSystemXmlApplicationContext("src/main/resources/beansinjectiontypes-ctx.xml")) {
|
||||
com.baeldung.beansinjectiontypes.setter.Dealership dealership =
|
||||
(com.baeldung.beansinjectiontypes.setter.Dealership) context.getBean("setterDealership");
|
||||
|
||||
assertTrue(dealership.getCar() instanceof Sedan);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue