Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -652,6 +652,7 @@
<module>spring-data-rest-querydsl</module>
<module>spring-di</module>
<module>spring-di-2</module>
<module>spring-di-3</module>
<module>spring-drools</module>

<module>spring-ejb</module>
Expand Down
4 changes: 3 additions & 1 deletion spring-di-2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ This module contains articles about dependency injection with Spring
- [Spring – Injecting Collections](https://www.baeldung.com/spring-injecting-collections)
- [Wiring in Spring: @Autowired, @Resource and @Inject](https://www.baeldung.com/spring-annotations-resource-inject-autowire)
- [Injecting Spring Beans into Unmanaged Objects](https://www.baeldung.com/spring-inject-bean-into-unmanaged-objects)
- More articles: [[<-- prev]](/spring-di)
- [Constructor Dependency Injection in Spring](https://www.baeldung.com/constructor-injection-in-spring)
- [Circular Dependencies in Spring](https://www.baeldung.com/circular-dependencies-in-spring)
- More articles: [[<-- prev]](../spring-di)[[more -->]](../spring-di-3)
36 changes: 20 additions & 16 deletions spring-di-2/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,37 +14,41 @@
<relativePath>../parent-spring-5</relativePath>
</parent>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>${spring-boot.version}</version>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring-boot.version}</version>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>${javax.inject.version}</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>

<build>
Expand Down Expand Up @@ -74,7 +78,7 @@
</build>

<properties>
<spring-boot.version>2.3.1.RELEASE</spring-boot.version>
<spring-boot.version>2.6.1</spring-boot.version>
<aspectj-plugin.version>1.11</aspectj-plugin.version>
<javax.inject.version>1</javax.inject.version>
</properties>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package com.baeldung.constructordi;

import com.baeldung.constructordi.domain.Engine;
import com.baeldung.constructordi.domain.Transmission;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import com.baeldung.constructordi.domain.Engine;
import com.baeldung.constructordi.domain.Transmission;

@Configuration
@ComponentScan("com.baeldung.constructordi")
public class Config {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package com.baeldung.constructordi;

import com.baeldung.constructordi.domain.Car;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.baeldung.constructordi.domain.Car;

public class SpringRunner {
public static void main(String[] args) {
Car toyota = getCarFromXml();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@

@Component
public class Car {
private Engine engine;
private Transmission transmission;

private final Engine engine;
private final Transmission transmission;

@Autowired
public Car(Engine engine, Transmission transmission) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.baeldung.constructordi.domain;

public class Engine {
private String type;
private int volume;

private final String type;
private final int volume;

public Engine(String type, int volume) {
this.type = type;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.baeldung.constructordi.domain;

public class Transmission {
private String type;

private final String type;

public Transmission(String type) {
this.type = type;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.baeldung.constructordi;

import static org.assertj.core.api.Assertions.assertThat;

import com.baeldung.constructordi.domain.Car;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
Expand All @@ -11,7 +10,7 @@
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;

import com.baeldung.constructordi.domain.Car;
import static org.assertj.core.api.Assertions.assertThat;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = Config.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = AspectJConfig.class)
public class PersonUnitTest {

@Test
public void givenUnmanagedObjects_whenInjectingIdService_thenIdValueIsCorrectlySet() {
PersonObject personObject = new PersonObject("Baeldung");
personObject.generateId();

assertEquals(1, personObject.getId());
assertEquals("Baeldung", personObject.getName());

Expand Down
8 changes: 8 additions & 0 deletions spring-di-3/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
## Spring Dependency Injection

This module contains articles about dependency injection with Spring

### Relevant Articles

- [@Lookup Annotation in Spring](https://www.baeldung.com/spring-lookup)
- More articles: [[<-- prev]](../spring-di-2)
45 changes: 45 additions & 0 deletions spring-di-3/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-di-3</artifactId>
<version>1.0-SNAPSHOT</version>
<name>spring-di-3</name>

<parent>
<groupId>com.baeldung</groupId>
<artifactId>parent-spring-5</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../parent-spring-5</relativePath>
</parent>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>

<properties>
<spring-boot.version>2.6.1</spring-boot.version>
</properties>

</project>
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,5 @@

@Configuration
@ComponentScan(basePackages = "com.baeldung.methodinjections")

public class AppConfig {
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.baeldung.methodinjections;

import java.util.Collection;

import org.springframework.stereotype.Component;

import java.util.Collection;

@Component
public class Grader {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.baeldung.methodinjections;

import java.util.ArrayList;
import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Collection;

@Component("schoolNotification")
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class SchoolNotification {
Expand All @@ -19,7 +19,7 @@ public class SchoolNotification {

public SchoolNotification(String name) {
this.name = name;
this.marks = new ArrayList<Integer>();
this.marks = new ArrayList<>();
}

public String addMark(Integer mark) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package com.baeldung.methodinjections;

import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Lookup;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

@Component("studentService")
public abstract class StudentServices {

private Map<String, SchoolNotification> notes = new HashMap<>();
private final Map<String, SchoolNotification> notes = new HashMap<>();

@Lookup
protected abstract SchoolNotification getNotification(String name);
Expand Down
1 change: 1 addition & 0 deletions spring-di-3/src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.baeldung.methodinjections;

import org.junit.Test;
import org.junit.jupiter.api.AfterEach;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;

public class StudentIntegrationTest {

private ConfigurableApplicationContext context;

@AfterEach
public void tearDown() {
context.close();
}

@Test
public void whenLookupMethodCalled_thenNewInstanceReturned() {
context = new AnnotationConfigApplicationContext(AppConfig.class);

Student student1 = context.getBean("studentBean", Student.class);
Student student2 = context.getBean("studentBean", Student.class);

assertEquals(student1, student2);
assertNotEquals(student1.getNotification("Alex"), student2.getNotification("Bethany"));
}

@Test
public void whenAbstractGetterMethodInjects_thenNewInstanceReturned() {
context = new ClassPathXmlApplicationContext("beans.xml");

StudentServices services = context.getBean("studentServices", StudentServices.class);

assertEquals("PASS", services.appendMark("Alex", 76));
assertEquals("FAIL", services.appendMark("Bethany", 44));
assertEquals("PASS", services.appendMark("Claire", 96));
}
}
12 changes: 12 additions & 0 deletions spring-di-3/src/test/resources/logback-test.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="15 seconds" debug="false">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%d{ISO8601}]-[%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>

<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
5 changes: 1 addition & 4 deletions spring-di/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,10 @@ This module contains articles about dependency injection with Spring
### Relevant Articles

- [The Spring @Qualifier Annotation](https://www.baeldung.com/spring-qualifier-annotation)
- [Constructor Dependency Injection in Spring](https://www.baeldung.com/constructor-injection-in-spring)
- [Spring Autowiring of Generic Types](https://www.baeldung.com/spring-autowire-generics)
- [Guice vs Spring – Dependency Injection](https://www.baeldung.com/guice-spring-dependency-injection)
- [Injecting Prototype Beans into a Singleton Instance in Spring](https://www.baeldung.com/spring-inject-prototype-bean-into-singleton)
- [@Lookup Annotation in Spring](https://www.baeldung.com/spring-lookup)
- [Controlling Bean Creation Order with @DependsOn Annotation](https://www.baeldung.com/spring-depends-on)
- [Unsatisfied Dependency in Spring](https://www.baeldung.com/spring-unsatisfied-dependency)
- [Circular Dependencies in Spring](https://www.baeldung.com/circular-dependencies-in-spring)
- [XML-Based Injection in Spring](https://www.baeldung.com/spring-xml-injection)
- More articles: [[next -->]](/spring-di-2)
- More articles: [[next -->]](../spring-di-2)
Loading