evaluation article, different types of bean injection. (#3511)
* Different types of bean injection in spring, initial write-up * Evaluation article code example, different types of bean injection.
This commit is contained in:
parent
83d5f6a485
commit
54bd8a5cdd
@ -0,0 +1,21 @@
|
|||||||
|
package com.baeldung.dependencyinjectiontypes;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class Student {
|
||||||
|
|
||||||
|
private TeacherFinder teacherFinder;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public Student(TeacherFinder teacherFinder) {
|
||||||
|
this.teacherFinder = teacherFinder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTeacher() {
|
||||||
|
return teacherFinder.getTeacherFinder();
|
||||||
|
}
|
||||||
|
// business logic that actually uses the injected teacherFinders is omitted...
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.baeldung.dependencyinjectiontypes;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class Student2 {
|
||||||
|
|
||||||
|
private TeacherFinder teacherFinder;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public void setTeacherFinder(TeacherFinder teacherFinder) {
|
||||||
|
this.teacherFinder = teacherFinder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTeacher() {
|
||||||
|
return teacherFinder.getTeacherFinder();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.baeldung.dependencyinjectiontypes;
|
||||||
|
public class TeacherFinder {
|
||||||
|
|
||||||
|
private String teacherFinder;
|
||||||
|
|
||||||
|
public String getTeacherFinder() {
|
||||||
|
return teacherFinder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTeacherFinder(String teacherFinder) {
|
||||||
|
this.teacherFinder = teacherFinder;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,35 +1,58 @@
|
|||||||
package com.baeldung.setterdi;
|
package com.baeldung.setterdi;
|
||||||
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
import com.baeldung.setterdi.domain.Engine;
|
import com.baeldung.dependencyinjectiontypes.Student;
|
||||||
import com.baeldung.setterdi.domain.Trailer;
|
import com.baeldung.dependencyinjectiontypes.Student2;
|
||||||
import com.baeldung.setterdi.domain.Transmission;
|
import com.baeldung.dependencyinjectiontypes.TeacherFinder;
|
||||||
|
import com.baeldung.setterdi.domain.Engine;
|
||||||
@Configuration
|
import com.baeldung.setterdi.domain.Trailer;
|
||||||
@ComponentScan("com.baeldung.setterdi")
|
import com.baeldung.setterdi.domain.Transmission;
|
||||||
public class Config {
|
|
||||||
|
@Configuration
|
||||||
@Bean
|
@ComponentScan("com.baeldung.setterdi")
|
||||||
public Engine engine() {
|
public class Config {
|
||||||
Engine engine = new Engine();
|
|
||||||
engine.setType("v8");
|
@Bean
|
||||||
engine.setVolume(5);
|
public Engine engine() {
|
||||||
return engine;
|
Engine engine = new Engine();
|
||||||
}
|
engine.setType("v8");
|
||||||
|
engine.setVolume(5);
|
||||||
@Bean
|
return engine;
|
||||||
public Transmission transmission() {
|
}
|
||||||
Transmission transmission = new Transmission();
|
|
||||||
transmission.setType("sliding");
|
@Bean
|
||||||
return transmission;
|
public Transmission transmission() {
|
||||||
}
|
Transmission transmission = new Transmission();
|
||||||
|
transmission.setType("sliding");
|
||||||
@Bean
|
return transmission;
|
||||||
public Trailer trailer() {
|
}
|
||||||
Trailer trailer = new Trailer();
|
|
||||||
return trailer;
|
@Bean
|
||||||
}
|
public Trailer trailer() {
|
||||||
|
Trailer trailer = new Trailer();
|
||||||
|
return trailer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public TeacherFinder teacherFinder(){
|
||||||
|
TeacherFinder teacherFinder =new TeacherFinder();
|
||||||
|
teacherFinder.setTeacherFinder("author");
|
||||||
|
return teacherFinder;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public Student student() {
|
||||||
|
return new Student(teacherFinder());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public Student2 student2() {
|
||||||
|
Student2 student2 = new Student2();
|
||||||
|
student2.setTeacherFinder(teacherFinder());
|
||||||
|
return student2;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -2,13 +2,25 @@ package com.baeldung.dependencyinjectiontypes;
|
|||||||
|
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
import org.springframework.test.context.support.AnnotationConfigContextLoader;
|
||||||
|
|
||||||
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
|
@ContextConfiguration(classes=com.baeldung.setterdi.Config.class, loader=AnnotationConfigContextLoader.class)
|
||||||
public class DependencyInjectionTest {
|
public class DependencyInjectionTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ApplicationContext appContext;
|
||||||
|
|
||||||
|
Logger logger = Logger.getLogger(this.getClass());
|
||||||
|
|
||||||
@Test
|
/* @Test
|
||||||
public void givenAutowiredAnnotation_WhenSetOnSetter_ThenDependencyValid() {
|
public void givenAutowiredAnnotation_WhenSetOnSetter_ThenDependencyValid() {
|
||||||
|
|
||||||
ApplicationContext context = new ClassPathXmlApplicationContext("dependencyinjectiontypes-context.xml");
|
ApplicationContext context = new ClassPathXmlApplicationContext("dependencyinjectiontypes-context.xml");
|
||||||
@ -30,6 +42,20 @@ public class DependencyInjectionTest {
|
|||||||
String formattedArticle = article.format(originalText);
|
String formattedArticle = article.format(originalText);
|
||||||
|
|
||||||
assertTrue(originalText.toUpperCase().equals(formattedArticle));
|
assertTrue(originalText.toUpperCase().equals(formattedArticle));
|
||||||
|
}*/
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenAutowiredAnnotation_OnSetter_ThenDependencyValid() {
|
||||||
|
Student student = (Student) appContext.getBean("student");
|
||||||
|
String teacherFound = student.getTeacher();
|
||||||
|
assertTrue(teacherFound.equals("author"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenAutowiredAnnotation_OnConstructor_ThenDependencyValid() {
|
||||||
|
Student2 student2 = (Student2) appContext.getBean("student2");
|
||||||
|
String teacherFound = student2.getTeacher();
|
||||||
|
assertTrue(teacherFound.equals("author"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user