diff --git a/core-java-modules/core-java-io-apis/README.md b/core-java-modules/core-java-io-apis/README.md index 4d2bb0afb1..9399443ebd 100644 --- a/core-java-modules/core-java-io-apis/README.md +++ b/core-java-modules/core-java-io-apis/README.md @@ -7,7 +7,6 @@ This module contains articles about core Java input/output(IO) APIs. - [A Guide to the Java FileReader Class](https://www.baeldung.com/java-filereader) - [The Java File Class](https://www.baeldung.com/java-io-file) - [Java FileWriter](https://www.baeldung.com/java-filewriter) -- [Differences Between the Java WatchService API and the Apache Commons IO Monitor Library](https://www.baeldung.com/java-watchservice-vs-apache-commons-io-monitor-library) - [Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java](https://www.baeldung.com/java-path) - [Quick Use of FilenameFilter](https://www.baeldung.com/java-filename-filter) - [Guide to BufferedReader](https://www.baeldung.com/java-buffered-reader) diff --git a/libraries-apache-commons/README.md b/libraries-apache-commons/README.md index 439587266b..aceea3282a 100644 --- a/libraries-apache-commons/README.md +++ b/libraries-apache-commons/README.md @@ -13,3 +13,4 @@ This module contains articles about Apache Commons libraries. - [Apache Commons BeanUtils](https://www.baeldung.com/apache-commons-beanutils) - [Histograms with Apache Commons Frequency](https://www.baeldung.com/apache-commons-frequency) - [An Introduction to Apache Commons Lang 3](https://www.baeldung.com/java-commons-lang-3) +- [Differences Between the Java WatchService API and the Apache Commons IO Monitor Library](https://www.baeldung.com/java-watchservice-vs-apache-commons-io-monitor-library) \ No newline at end of file diff --git a/libraries-apache-commons/pom.xml b/libraries-apache-commons/pom.xml index 688a500c4a..74adddabcf 100644 --- a/libraries-apache-commons/pom.xml +++ b/libraries-apache-commons/pom.xml @@ -57,6 +57,11 @@ xchart ${xchart-version} + + commons-io + commons-io + ${common-io.version} + @@ -68,6 +73,7 @@ 1.6 3.5.2 3.6.1 + 2.5 diff --git a/core-java-modules/core-java-io-apis/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java b/libraries-apache-commons/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java similarity index 100% rename from core-java-modules/core-java-io-apis/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java rename to libraries-apache-commons/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java diff --git a/parent-boot-2/pom.xml b/parent-boot-2/pom.xml index ab5424bfaf..ed0f327b8c 100644 --- a/parent-boot-2/pom.xml +++ b/parent-boot-2/pom.xml @@ -31,6 +31,7 @@ io.rest-assured rest-assured + ${rest-assured.version} org.springframework.boot diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/statmentVsPreparedstatment/DatasourceFactory.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/statmentVsPreparedstatment/DatasourceFactory.java new file mode 100644 index 0000000000..adbdc66030 --- /dev/null +++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/statmentVsPreparedstatment/DatasourceFactory.java @@ -0,0 +1,23 @@ +package com.baeldung.statmentVsPreparedstatment; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +public class DatasourceFactory { + + private Connection connection; + + public Connection getConnection() throws ClassNotFoundException, SQLException { + Class.forName("org.h2.Driver"); + connection = DriverManager.getConnection("jdbc:h2:mem:db_basic", "SA", ""); + connection.setAutoCommit(false); + return connection; + } + + public boolean createTables() throws SQLException { + String query = "create table if not exists PERSONS (ID INT, NAME VARCHAR(45))"; + return connection.createStatement().executeUpdate(query) == 0; + } + +} diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/statmentVsPreparedstatment/PersonEntity.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/statmentVsPreparedstatment/PersonEntity.java new file mode 100644 index 0000000000..72fc0c1e24 --- /dev/null +++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/statmentVsPreparedstatment/PersonEntity.java @@ -0,0 +1,42 @@ +package com.baeldung.statmentVsPreparedstatment; + +import java.util.Objects; + +public class PersonEntity { + private int id; + private String name; + + public PersonEntity(int id, String name) { + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + PersonEntity that = (PersonEntity) o; + return id == that.id && Objects.equals(name, that.name); + } + + @Override public int hashCode() { + return Objects.hash(id, name); + } +} diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/statmentVsPreparedstatment/PreparedStatementPersonDao.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/statmentVsPreparedstatment/PreparedStatementPersonDao.java new file mode 100644 index 0000000000..47124d9139 --- /dev/null +++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/statmentVsPreparedstatment/PreparedStatementPersonDao.java @@ -0,0 +1,88 @@ +package com.baeldung.statmentVsPreparedstatment; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +public class PreparedStatementPersonDao { + + private final Connection connection; + + public PreparedStatementPersonDao(Connection connection) { + this.connection = connection; + } + + public Optional getById(int id) throws SQLException { + String query = "SELECT id, name FROM persons WHERE id = ?"; + + PreparedStatement preparedStatement = connection.prepareStatement(query); + preparedStatement.setInt(1, id); + ResultSet resultSet = preparedStatement.executeQuery(); + + if (resultSet.first()) { + + PersonEntity result = new PersonEntity(resultSet.getInt("id"), + resultSet.getString("name")); + + return Optional.of(result); + } else { + return Optional.empty(); + } + + } + + public void insert(PersonEntity personEntity) throws SQLException { + + String query = "INSERT INTO persons(id, name) VALUES( ?, ?)"; + + PreparedStatement preparedStatement = connection.prepareStatement(query); + preparedStatement.setInt(1, personEntity.getId()); + preparedStatement.setString(2, personEntity.getName()); + preparedStatement.executeUpdate(); + + } + + public void insert(List personEntities) throws SQLException { + String query = "INSERT INTO persons(id, name) VALUES( ?, ?)"; + + PreparedStatement preparedStatement = connection.prepareStatement(query); + for (PersonEntity personEntity : personEntities) { + preparedStatement.setInt(1, personEntity.getId()); + preparedStatement.setString(2, personEntity.getName()); + preparedStatement.addBatch(); + } + preparedStatement.executeBatch(); + + } + + public void update(PersonEntity personEntity) throws SQLException { + String query = "UPDATE persons SET name = ? WHERE id = ?"; + PreparedStatement preparedStatement = connection.prepareStatement(query); + preparedStatement.setString(1, personEntity.getName()); + preparedStatement.setInt(2, personEntity.getId()); + preparedStatement.executeUpdate(); + } + + public void deleteById(int id) throws SQLException { + String query = "DELETE FROM persons WHERE id = ?"; + PreparedStatement preparedStatement = connection.prepareStatement(query); + preparedStatement.setInt(1, id); + preparedStatement.executeUpdate(); + } + + public List getAll() throws SQLException { + String query = "SELECT id, name FROM persons"; + + PreparedStatement preparedStatement = connection.prepareStatement(query); + ResultSet resultSet = preparedStatement.executeQuery(); + List result = new ArrayList<>(); + while (resultSet.next()) { + result.add(new PersonEntity(resultSet.getInt("id"), resultSet.getString("name"))); + } + return result; + } +} diff --git a/persistence-modules/core-java-persistence/src/main/java/com/baeldung/statmentVsPreparedstatment/StatementPersonDao.java b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/statmentVsPreparedstatment/StatementPersonDao.java new file mode 100644 index 0000000000..935ba8efa2 --- /dev/null +++ b/persistence-modules/core-java-persistence/src/main/java/com/baeldung/statmentVsPreparedstatment/StatementPersonDao.java @@ -0,0 +1,75 @@ +package com.baeldung.statmentVsPreparedstatment; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +public class StatementPersonDao { + + private final Connection connection; + + public StatementPersonDao(Connection connection) { + this.connection = connection; + } + + public Optional getById(int id) throws SQLException { + String query = "SELECT id, name, FROM persons WHERE id = '" + id + "'"; + + Statement statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery(query); + + if (resultSet.first()) { + PersonEntity result = new PersonEntity(resultSet.getInt("id"), + resultSet.getString("name")); + return Optional.of(result); + } else { + return Optional.empty(); + } + } + + public void insert(PersonEntity personEntity) throws SQLException { + String query = "INSERT INTO persons(id, name) VALUES(" + personEntity.getId() + ", '" + + personEntity.getName() + "')"; + + Statement statement = connection.createStatement(); + statement.executeUpdate(query); + } + + public void insert(List personEntities) throws SQLException { + for (PersonEntity personEntity : personEntities) { + insert(personEntity); + } + } + + public void update(PersonEntity personEntity) throws SQLException { + + String query = "UPDATE persons SET name = '" + personEntity.getName() + "' WHERE id = " + + personEntity.getId(); + + Statement statement = connection.createStatement(); + statement.executeUpdate(query); + + } + + public void deleteById(int id) throws SQLException { + String query = "DELETE FROM persons WHERE id = " + id; + Statement statement = connection.createStatement(); + statement.executeUpdate(query); + } + + public List getAll() throws SQLException { + String query = "SELECT id, name, FROM persons"; + + Statement statement = connection.createStatement(); + ResultSet resultSet = statement.executeQuery(query); + List result = new ArrayList<>(); + while (resultSet.next()) { + result.add(new PersonEntity(resultSet.getInt("id"), resultSet.getString("name"))); + } + return result; + } +} diff --git a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/statmentVsPreparedstatment/DatasourceFactoryUnitTest.java b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/statmentVsPreparedstatment/DatasourceFactoryUnitTest.java new file mode 100644 index 0000000000..5d3b151d5d --- /dev/null +++ b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/statmentVsPreparedstatment/DatasourceFactoryUnitTest.java @@ -0,0 +1,22 @@ +package com.baeldung.statmentVsPreparedstatment; + +import org.junit.jupiter.api.Test; + +import java.sql.Connection; +import java.sql.SQLException; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class DatasourceFactoryUnitTest { + + @Test + void whenCreateConnectionAndTables_thenConnectionIsOpenAndTableIsCreated() + throws SQLException, ClassNotFoundException { + DatasourceFactory factory = new DatasourceFactory(); + Connection connection = factory.getConnection(); + + assertFalse(connection.isClosed()); + assertTrue(factory.createTables()); + } +} \ No newline at end of file diff --git a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/statmentVsPreparedstatment/PreparedStatementPersonDaoUnitTest.java b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/statmentVsPreparedstatment/PreparedStatementPersonDaoUnitTest.java new file mode 100644 index 0000000000..ce79f47802 --- /dev/null +++ b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/statmentVsPreparedstatment/PreparedStatementPersonDaoUnitTest.java @@ -0,0 +1,94 @@ +package com.baeldung.statmentVsPreparedstatment; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.*; + +class PreparedStatementPersonDaoUnitTest { + private PreparedStatementPersonDao dao; + + @BeforeEach + void setup() throws SQLException, ClassNotFoundException { + DatasourceFactory datasourceFactory = new DatasourceFactory(); + Connection connection = datasourceFactory.getConnection(); + datasourceFactory.createTables(); + dao = new PreparedStatementPersonDao(connection); + } + + @Test + void whenInsertAPerson_thenItNeverThrowsAnException() { + assertDoesNotThrow(() -> dao.insert(new PersonEntity(1, "john"))); + } + + @Test + void whenInsertAPersonWithQuoteInText_thenItNeverThrowsAnException() { + assertDoesNotThrow(() -> dao.insert(new PersonEntity(1, "O'Brien"))); + } + + @Test + void whenGetAPersonById_thenItReturnThePersonInDatabase() throws SQLException { + dao.insert(new PersonEntity(1, "john")); + + Optional maybeEmployee = dao.getById(1); + assertTrue(maybeEmployee.isPresent()); + + PersonEntity personEntity = maybeEmployee.get(); + + assertEquals(1, personEntity.getId()); + assertEquals("john", personEntity.getName()); + } + + @Test + void whenInsertAndGetMultiplePersons_thenItNeverThrowsAnException() throws SQLException { + assertDoesNotThrow(() -> dao.insert( + Arrays.asList(new PersonEntity(1, "john"), new PersonEntity(2, "skit")))); + + List result = dao.getAll(); + + assertEquals(Arrays.asList(new PersonEntity(1, "john"), new PersonEntity(2, "skit")), + result); + } + + @Test + void whenUpdateAnExistentPerson_thenItReturnsTheUpdatedPerson() throws SQLException { + dao.insert(new PersonEntity(1, "john")); + dao.update(new PersonEntity(1, "johnny")); + + Optional maybePerson = dao.getById(1); + + assertTrue(maybePerson.isPresent()); + + PersonEntity personEntity = maybePerson.get(); + + assertEquals(1, personEntity.getId()); + assertEquals("johnny", personEntity.getName()); + } + + @Test + void whenDeleteAPersonById_thenItWillBeAbsentInDatabase() throws SQLException { + dao.insert(new PersonEntity(1, "john")); + dao.deleteById(1); + + Optional maybePerson = dao.getById(1); + + assertFalse(maybePerson.isPresent()); + } + + @Test + void whenAHackerUpdateAPerson_thenItUpdatesTheTargetPerson() throws SQLException { + dao.insert(Arrays.asList(new PersonEntity(1, "john"), new PersonEntity(2, "skeet"))); + dao.update(new PersonEntity(1, "hacker' --")); + + List result = dao.getAll(); + + assertEquals(Arrays.asList(new PersonEntity(1, "hacker' --"), new PersonEntity(2, "skeet")), + result); + } +} \ No newline at end of file diff --git a/persistence-modules/core-java-persistence/src/test/java/com/baeldung/statmentVsPreparedstatment/StatementPersonDaoUnitTest.java b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/statmentVsPreparedstatment/StatementPersonDaoUnitTest.java new file mode 100644 index 0000000000..b31bdcc296 --- /dev/null +++ b/persistence-modules/core-java-persistence/src/test/java/com/baeldung/statmentVsPreparedstatment/StatementPersonDaoUnitTest.java @@ -0,0 +1,96 @@ +package com.baeldung.statmentVsPreparedstatment; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.*; + +class StatementPersonDaoUnitTest { + + private StatementPersonDao dao; + + @BeforeEach + void setup() throws SQLException, ClassNotFoundException { + DatasourceFactory datasourceFactory = new DatasourceFactory(); + Connection connection = datasourceFactory.getConnection(); + datasourceFactory.createTables(); + dao = new StatementPersonDao(connection); + } + + @Test + void whenInsertAPerson_thenItNeverThrowsAnException() { + assertDoesNotThrow(() -> dao.insert(new PersonEntity(1, "john"))); + } + + @Test + void whenInsertAPersonWithQuoteInText_thenItWillThrowAnException() { + assertThrows(SQLException.class, () -> dao.insert(new PersonEntity(1, "O'Brien"))); + } + + @Test + void whenGetAPersonById_thenItReturnThePersonInDatabase() throws SQLException { + dao.insert(new PersonEntity(1, "john")); + + Optional maybeEmployee = dao.getById(1); + + assertTrue(maybeEmployee.isPresent()); + + PersonEntity personEntity = maybeEmployee.get(); + + assertEquals(1, personEntity.getId()); + assertEquals("john", personEntity.getName()); + } + + @Test + void whenInsertAndGetMultiplePersons_thenItNeverThrowsAnException() throws SQLException { + assertDoesNotThrow(() -> dao.insert( + Arrays.asList(new PersonEntity(1, "john"), new PersonEntity(2, "skeet")))); + + List result = dao.getAll(); + + assertEquals(Arrays.asList(new PersonEntity(1, "john"), new PersonEntity(2, "skeet")), + result); + } + + @Test + void whenUpdateAnExistentPerson_thenItReturnsTheUpdatedPerson() throws SQLException { + dao.insert(new PersonEntity(1, "john")); + dao.update(new PersonEntity(1, "johnny")); + + Optional maybePerson = dao.getById(1); + + assertTrue(maybePerson.isPresent()); + + PersonEntity personEntity = maybePerson.get(); + + assertEquals(1, personEntity.getId()); + assertEquals("johnny", personEntity.getName()); + } + + @Test + void whenDeleteAPersonById_thenItWillBeAbsentInDatabase() throws SQLException { + dao.insert(new PersonEntity(1, "john")); + dao.deleteById(1); + + Optional maybePerson = dao.getById(1); + + assertFalse(maybePerson.isPresent()); + } + + @Test + void whenAHackerUpdateAPerson_thenItAllPersonsAreUpdated() throws SQLException { + dao.insert(Arrays.asList(new PersonEntity(1, "john"), new PersonEntity(2, "skeet"))); + dao.update(new PersonEntity(1, "hacker' --")); + + List result = dao.getAll(); + + assertEquals(Arrays.asList(new PersonEntity(1, "hacker"), new PersonEntity(2, "hacker")), + result); + } +} \ No newline at end of file diff --git a/persistence-modules/hibernate-exceptions/README.md b/persistence-modules/hibernate-exceptions/README.md index c2014a3c91..616800a63d 100644 --- a/persistence-modules/hibernate-exceptions/README.md +++ b/persistence-modules/hibernate-exceptions/README.md @@ -1,3 +1,5 @@ ### Relevant Articles: - [Hibernate could not initialize proxy – no Session](https://www.baeldung.com/hibernate-initialize-proxy-exception) +- [Hibernate Error “No Persistence Provider for EntityManager”](https://www.baeldung.com/hibernate-no-persistence-provider) +- [TransactionRequiredException Error](https://www.baeldung.com/jpa-transaction-required-exception) \ No newline at end of file diff --git a/persistence-modules/hibernate-jpa/README.md b/persistence-modules/hibernate-jpa/README.md index 514fcedb8a..64ec9dcae3 100644 --- a/persistence-modules/hibernate-jpa/README.md +++ b/persistence-modules/hibernate-jpa/README.md @@ -11,7 +11,5 @@ This module contains articles specific to use of Hibernate as a JPA implementati - [Criteria API – An Example of IN Expressions](https://www.baeldung.com/jpa-criteria-api-in-expressions) - [One-to-One Relationship in JPA](https://www.baeldung.com/jpa-one-to-one) - [Enabling Transaction Locks in Spring Data JPA](https://www.baeldung.com/java-jpa-transaction-locks) -- [TransactionRequiredException Error](https://www.baeldung.com/jpa-transaction-required-exception) - [JPA/Hibernate Persistence Context](https://www.baeldung.com/jpa-hibernate-persistence-context) - [Quick Guide to EntityManager#getReference()](https://www.baeldung.com/jpa-entity-manager-get-reference) -- [Hibernate Error “No Persistence Provider for EntityManager”](https://www.baeldung.com/hibernate-no-persistence-provider) diff --git a/persistence-modules/spring-data-redis/pom.xml b/persistence-modules/spring-data-redis/pom.xml index d2bf074d03..d271df31c7 100644 --- a/persistence-modules/spring-data-redis/pom.xml +++ b/persistence-modules/spring-data-redis/pom.xml @@ -98,7 +98,6 @@ 3.2.4 0.10.0 0.6 - 2.1.9.RELEASE diff --git a/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/reactive/redis/config/RedisConfig.java b/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/reactive/redis/config/RedisConfig.java index d23d0092eb..de8e447ef8 100644 --- a/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/reactive/redis/config/RedisConfig.java +++ b/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/reactive/redis/config/RedisConfig.java @@ -31,11 +31,6 @@ public class RedisConfig { return new ReactiveRedisTemplate<>(factory, context); } - @Bean - public ReactiveRedisTemplate reactiveRedisTemplateString(ReactiveRedisConnectionFactory connectionFactory) { - return new ReactiveRedisTemplate<>(connectionFactory, RedisSerializationContext.string()); - } - @Bean public ReactiveKeyCommands keyCommands(final ReactiveRedisConnectionFactory reactiveRedisConnectionFactory) { return reactiveRedisConnectionFactory.getReactiveConnection() diff --git a/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/SpringRedisApplication.java b/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/SpringRedisApplication.java new file mode 100644 index 0000000000..82c06f803b --- /dev/null +++ b/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/SpringRedisApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.spring.data.redis; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringRedisApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringRedisApplication.class, args); + } + +} diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateListOpsIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateListOpsIntegrationTest.java index 58846d7c27..cd5994c854 100644 --- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateListOpsIntegrationTest.java +++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/reactive/redis/template/RedisTemplateListOpsIntegrationTest.java @@ -2,9 +2,6 @@ package com.baeldung.spring.data.reactive.redis.template; import com.baeldung.spring.data.reactive.redis.SpringRedisReactiveApplication; - -import java.io.IOException; - import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; @@ -13,7 +10,7 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.ReactiveListOperations; -import org.springframework.data.redis.core.ReactiveRedisTemplate; +import org.springframework.data.redis.core.ReactiveStringRedisTemplate; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.junit4.SpringRunner; @@ -21,6 +18,8 @@ import reactor.core.publisher.Mono; import reactor.test.StepVerifier; import redis.embedded.RedisServerBuilder; +import java.io.IOException; + @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = SpringRedisReactiveApplication.class) @DirtiesContext(classMode = ClassMode.BEFORE_CLASS) @@ -30,7 +29,7 @@ public class RedisTemplateListOpsIntegrationTest { private static redis.embedded.RedisServer redisServer; @Autowired - private ReactiveRedisTemplate redisTemplate; + private ReactiveStringRedisTemplate redisTemplate; private ReactiveListOperations reactiveListOps; diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java index 6f9e6a8757..6501f3f9f0 100644 --- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java +++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/spring/data/redis/RedisMessageListenerIntegrationTest.java @@ -1,44 +1,40 @@ package com.baeldung.spring.data.redis; -import static org.junit.Assert.assertTrue; - -import java.io.IOException; -import java.util.UUID; - +import com.baeldung.spring.data.redis.queue.RedisMessagePublisher; +import com.baeldung.spring.data.redis.queue.RedisMessageSubscriber; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.ClassMode; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import com.baeldung.spring.data.redis.config.RedisConfig; -import com.baeldung.spring.data.redis.queue.RedisMessagePublisher; -import com.baeldung.spring.data.redis.queue.RedisMessageSubscriber; - +import org.springframework.test.context.junit4.SpringRunner; import redis.embedded.RedisServerBuilder; -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = RedisConfig.class) +import java.util.UUID; + +import static org.junit.Assert.assertTrue; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = SpringRedisApplication.class) @DirtiesContext(classMode = ClassMode.BEFORE_CLASS) public class RedisMessageListenerIntegrationTest { private static redis.embedded.RedisServer redisServer; - + @Autowired private RedisMessagePublisher redisMessagePublisher; - + @BeforeClass - public static void startRedisServer() throws IOException { + public static void startRedisServer() { redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 256M").build(); redisServer.start(); } - + @AfterClass - public static void stopRedisServer() throws IOException { + public static void stopRedisServer() { redisServer.stop(); } diff --git a/pom.xml b/pom.xml index f5409d60c4..9d9c448887 100644 --- a/pom.xml +++ b/pom.xml @@ -386,6 +386,7 @@ core-java-modules core-kotlin-modules + core-scala couchbase custom-pmd @@ -559,6 +560,7 @@ atomikos reactive-systems + slack @@ -707,6 +709,7 @@ spring-rest-shell spring-rest-simple spring-resttemplate + spring-resttemplate-2 spring-rest-testing spring-roo @@ -901,6 +904,7 @@ core-java-modules core-kotlin-modules + core-scala couchbase custom-pmd @@ -1071,6 +1075,7 @@ atomikos reactive-systems + slack @@ -1211,6 +1216,7 @@ spring-rest-shell spring-rest-simple spring-resttemplate + spring-resttemplate-2 spring-rest-testing spring-roo diff --git a/spring-boot-modules/spring-boot-client/pom.xml b/spring-boot-modules/spring-boot-client/pom.xml index a7737be106..aa832497e9 100644 --- a/spring-boot-modules/spring-boot-client/pom.xml +++ b/spring-boot-modules/spring-boot-client/pom.xml @@ -116,7 +116,6 @@ 18.0 - 1.2.0 2.2.4 diff --git a/spring-boot-modules/spring-boot-parent/spring-boot-with-starter-parent/pom.xml b/spring-boot-modules/spring-boot-parent/spring-boot-with-starter-parent/pom.xml index 7413492d7f..108e66b68e 100644 --- a/spring-boot-modules/spring-boot-parent/spring-boot-with-starter-parent/pom.xml +++ b/spring-boot-modules/spring-boot-parent/spring-boot-with-starter-parent/pom.xml @@ -41,7 +41,5 @@ 1.8 2.2.5.RELEASE - 4.11 - diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml index 6fddb1693f..0e2cac1ff9 100644 --- a/spring-cloud/pom.xml +++ b/spring-cloud/pom.xml @@ -10,9 +10,9 @@ com.baeldung - parent-modules - 1.0.0-SNAPSHOT - .. + parent-boot-2 + 0.0.1-SNAPSHOT + ../parent-boot-2 @@ -56,17 +56,15 @@ - 1.2.2.RELEASE - Brixton.SR7 - 1.2.2.RELEASE - 1.2.2.RELEASE - 2.0.2.RELEASE - 1.4.6.RELEASE - 1.2.3.RELEASE - 1.3.0.RELEASE - 1.4.2.RELEASE - 1.4.2.RELEASE - 1.2.3.RELEASE + Hoxton.SR4 + 2.2.3.RELEASE + 2.2.3.RELEASE + 1.4.7.RELEASE + 1.4.7.RELEASE + 1.4.7.RELEASE + 3.0.6.RELEASE + 2.3.1.RELEASE + 2.3.1.RELEASE diff --git a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/discovery/DiscoveryClientApplication.java b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/discovery/DiscoveryClientApplication.java index d013969ad3..e01799b8d9 100644 --- a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/discovery/DiscoveryClientApplication.java +++ b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/discovery/DiscoveryClientApplication.java @@ -4,12 +4,14 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import static org.springframework.boot.WebApplicationType.NONE; + @SpringBootApplication @EnableDiscoveryClient public class DiscoveryClientApplication { public static void main(String[] args) { - new SpringApplicationBuilder(DiscoveryClientApplication.class).web(true) + new SpringApplicationBuilder(DiscoveryClientApplication.class).web(NONE) .run(args); } diff --git a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/health/ServiceDiscoveryApplication.java b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/health/ServiceDiscoveryApplication.java index 020d7d017c..1ef3e34e08 100644 --- a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/health/ServiceDiscoveryApplication.java +++ b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/health/ServiceDiscoveryApplication.java @@ -1,13 +1,16 @@ package com.baeldung.spring.cloud.consul.health; +import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; +import static org.springframework.boot.WebApplicationType.NONE; + @SpringBootApplication public class ServiceDiscoveryApplication { public static void main(String[] args) { - new SpringApplicationBuilder(ServiceDiscoveryApplication.class).web(true) + new SpringApplicationBuilder(ServiceDiscoveryApplication.class).web(NONE) .run(args); } diff --git a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/properties/DistributedPropertiesApplication.java b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/properties/DistributedPropertiesApplication.java index c1d2b0acc5..d854b5aaba 100644 --- a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/properties/DistributedPropertiesApplication.java +++ b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/properties/DistributedPropertiesApplication.java @@ -4,12 +4,14 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.web.bind.annotation.RestController; +import static org.springframework.boot.WebApplicationType.NONE; + @SpringBootApplication @RestController public class DistributedPropertiesApplication { public static void main(String[] args) { - new SpringApplicationBuilder(DistributedPropertiesApplication.class).web(true) + new SpringApplicationBuilder(DistributedPropertiesApplication.class).web(NONE) .run(args); } diff --git a/spring-cloud/spring-cloud-functions/pom.xml b/spring-cloud/spring-cloud-functions/pom.xml index 4654d70dd7..7e6f5dfbdc 100644 --- a/spring-cloud/spring-cloud-functions/pom.xml +++ b/spring-cloud/spring-cloud-functions/pom.xml @@ -85,7 +85,6 @@ 1.0.1.RELEASE 2.0.2 1.1.0 - 2.0.4.RELEASE 1.0.10.RELEASE diff --git a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml index 367b7c111e..acb9993881 100644 --- a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml @@ -36,18 +36,22 @@ org.springframework.cloud spring-cloud-starter-hystrix + ${spring-cloud-starter-hystrix.version} org.springframework.cloud spring-cloud-starter-hystrix-dashboard + ${spring-cloud-starter-hystrix.version} org.springframework.cloud spring-cloud-starter-feign + ${spring-cloud-starter-feign.version} org.springframework.boot spring-boot-starter-web + ${spring-boot-starter-web.version} org.springframework.boot diff --git a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/src/main/java/com/baeldung/spring/cloud/hystrix/rest/consumer/GreetingClient.java b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/src/main/java/com/baeldung/spring/cloud/hystrix/rest/consumer/GreetingClient.java index 4fcfb0eeda..2a31917352 100644 --- a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/src/main/java/com/baeldung/spring/cloud/hystrix/rest/consumer/GreetingClient.java +++ b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/src/main/java/com/baeldung/spring/cloud/hystrix/rest/consumer/GreetingClient.java @@ -1,7 +1,7 @@ package com.baeldung.spring.cloud.hystrix.rest.consumer; import com.baeldung.spring.cloud.hystrix.rest.producer.GreetingController; -import org.springframework.cloud.netflix.feign.FeignClient; +import org.springframework.cloud.openfeign.FeignClient; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.PathVariable; diff --git a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/src/main/java/com/baeldung/spring/cloud/hystrix/rest/consumer/RestConsumerFeignApplication.java b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/src/main/java/com/baeldung/spring/cloud/hystrix/rest/consumer/RestConsumerFeignApplication.java index 2fc54216fe..044b0dbcb8 100644 --- a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/src/main/java/com/baeldung/spring/cloud/hystrix/rest/consumer/RestConsumerFeignApplication.java +++ b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/src/main/java/com/baeldung/spring/cloud/hystrix/rest/consumer/RestConsumerFeignApplication.java @@ -3,8 +3,8 @@ package com.baeldung.spring.cloud.hystrix.rest.consumer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; -import org.springframework.cloud.netflix.feign.EnableFeignClients; import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; +import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication @EnableCircuitBreaker diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationIntegrationTest.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationIntegrationTest.java index 898d06897f..c8b8c9f1a9 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationIntegrationTest.java +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsServiceApplicationIntegrationTest.java @@ -28,13 +28,13 @@ public class MultipleOutputsServiceApplicationIntegrationTest { @Test public void whenSendMessage_thenResponseIsInAOutput() { whenSendMessage(1); - thenPayloadInChannelIs(pipe.anOutput(), 1); + thenPayloadInChannelIs(pipe.anOutput(), "1"); } @Test public void whenSendMessage_thenResponseIsInAnotherOutput() { whenSendMessage(11); - thenPayloadInChannelIs(pipe.anotherOutput(), 11); + thenPayloadInChannelIs(pipe.anotherOutput(), "11"); } private void whenSendMessage(Integer val) { @@ -43,7 +43,7 @@ public class MultipleOutputsServiceApplicationIntegrationTest { .build()); } - private void thenPayloadInChannelIs(MessageChannel channel, Integer expectedValue) { + private void thenPayloadInChannelIs(MessageChannel channel, String expectedValue) { Object payload = messageCollector.forChannel(channel) .poll() .getPayload(); diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceIntegrationTest.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceIntegrationTest.java index c3bf5a1205..1aa8d38aa1 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceIntegrationTest.java +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MultipleOutputsWithConditionsServiceIntegrationTest.java @@ -28,13 +28,13 @@ public class MultipleOutputsWithConditionsServiceIntegrationTest { @Test public void whenSendMessage_thenResponseIsInAOutput() { whenSendMessage(1); - thenPayloadInChannelIs(pipe.anOutput(), 1); + thenPayloadInChannelIs(pipe.anOutput(), "1"); } @Test public void whenSendMessage_thenResponseIsInAnotherOutput() { whenSendMessage(11); - thenPayloadInChannelIs(pipe.anotherOutput(), 11); + thenPayloadInChannelIs(pipe.anotherOutput(), "11"); } private void whenSendMessage(Integer val) { @@ -43,7 +43,7 @@ public class MultipleOutputsWithConditionsServiceIntegrationTest { .build()); } - private void thenPayloadInChannelIs(MessageChannel channel, Integer expectedValue) { + private void thenPayloadInChannelIs(MessageChannel channel, String expectedValue) { Object payload = messageCollector.forChannel(channel) .poll() .getPayload(); diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationIntegrationTest.java b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationIntegrationTest.java index 21d84e79e0..7e5f4fbec7 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationIntegrationTest.java +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-rabbit/src/test/java/com/baeldung/spring/cloud/stream/rabbit/MyLoggerApplicationIntegrationTest.java @@ -35,6 +35,6 @@ public class MyLoggerApplicationIntegrationTest { .poll() .getPayload(); - assertEquals("[1]: This is my message", payload.toString()); + assertEquals("{\"message\":\"[1]: This is my message\"}", payload.toString()); } } diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/pom.xml b/spring-cloud/spring-cloud-zookeeper/Greeting/pom.xml index ac469d8bc4..871218e78c 100644 --- a/spring-cloud/spring-cloud-zookeeper/Greeting/pom.xml +++ b/spring-cloud/spring-cloud-zookeeper/Greeting/pom.xml @@ -30,6 +30,10 @@ spring-boot-starter ${spring-boot.version} + + org.springframework.boot + spring-boot-starter-web + org.springframework spring-web @@ -56,7 +60,10 @@ spring-cloud-starter-feign ${spring-cloud-starter-feign.version} - + + org.springframework.cloud + spring-cloud-starter-openfeign + org.springframework.boot spring-boot-starter-test @@ -71,7 +78,6 @@ - 1.2.5.RELEASE 1.3 diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/HelloWorldClient.java b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/HelloWorldClient.java index c56cb1907a..dc90576e08 100644 --- a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/HelloWorldClient.java +++ b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/HelloWorldClient.java @@ -2,8 +2,8 @@ package com.baeldung.spring.cloud.greeting; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -import org.springframework.cloud.netflix.feign.EnableFeignClients; -import org.springframework.cloud.netflix.feign.FeignClient; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.cloud.openfeign.FeignClient; import org.springframework.context.annotation.Configuration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; diff --git a/spring-cloud/spring-cloud-zookeeper/pom.xml b/spring-cloud/spring-cloud-zookeeper/pom.xml index 64d30b19a6..244ccbd957 100644 --- a/spring-cloud/spring-cloud-zookeeper/pom.xml +++ b/spring-cloud/spring-cloud-zookeeper/pom.xml @@ -18,8 +18,7 @@ - 1.5.2.RELEASE - 4.3.7.RELEASE + 5.2.7.RELEASE 1.0.3.RELEASE diff --git a/spring-core-2/README.md b/spring-core-2/README.md index 10d3080b45..3c6bd05876 100644 --- a/spring-core-2/README.md +++ b/spring-core-2/README.md @@ -6,13 +6,9 @@ This module contains articles about core Spring functionality - [Guide to Spring @Autowired](http://www.baeldung.com/spring-autowire) - [Spring Profiles](http://www.baeldung.com/spring-profiles) -- [A Spring Custom Annotation for a Better DAO](http://www.baeldung.com/spring-annotation-bean-pre-processor) - [Quick Guide to Spring Bean Scopes](http://www.baeldung.com/spring-bean-scopes) -- [Custom Scope in Spring](http://www.baeldung.com/spring-custom-scope) - [@Order in Spring](http://www.baeldung.com/spring-order) - [Spring @Primary Annotation](http://www.baeldung.com/spring-primary) - [Spring Events](https://www.baeldung.com/spring-events) - [Spring Null-Safety Annotations](https://www.baeldung.com/spring-null-safety-annotations) -- [Using @Autowired in Abstract Classes](https://www.baeldung.com/spring-autowired-abstract-class) -- [Running Setup Data on Startup in Spring](https://www.baeldung.com/running-setup-logic-on-startup-in-spring) - More articles: [[<-- prev]](/spring-core)[[next -->]](/spring-core-3) diff --git a/spring-core-3/README.md b/spring-core-3/README.md index 6c210b23ef..b6257cb9a4 100644 --- a/spring-core-3/README.md +++ b/spring-core-3/README.md @@ -7,8 +7,8 @@ This module contains articles about core Spring functionality - [Understanding getBean() in Spring](https://www.baeldung.com/spring-getbean) - [Guide to the Spring BeanFactory](https://www.baeldung.com/spring-beanfactory) - [How to use the Spring FactoryBean?](https://www.baeldung.com/spring-factorybean) -- [Spring – Injecting Collections](https://www.baeldung.com/spring-injecting-collections) - [Design Patterns in the Spring Framework](https://www.baeldung.com/spring-framework-design-patterns) -- [Injecting a Value in a Static Field in Spring](https://www.baeldung.com/spring-inject-static-field) - [Difference Between BeanFactory and ApplicationContext](https://www.baeldung.com/spring-beanfactory-vs-applicationcontext) +- [A Spring Custom Annotation for a Better DAO](http://www.baeldung.com/spring-annotation-bean-pre-processor) +- [Custom Scope in Spring](http://www.baeldung.com/spring-custom-scope) - More articles: [[<-- prev]](/spring-core-2) diff --git a/spring-core-2/src/main/java/com/baeldung/customannotation/CustomAnnotationConfiguration.java b/spring-core-3/src/main/java/com/baeldung/customannotation/CustomAnnotationConfiguration.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/customannotation/CustomAnnotationConfiguration.java rename to spring-core-3/src/main/java/com/baeldung/customannotation/CustomAnnotationConfiguration.java diff --git a/spring-core-2/src/main/java/com/baeldung/customannotation/DataAccess.java b/spring-core-3/src/main/java/com/baeldung/customannotation/DataAccess.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/customannotation/DataAccess.java rename to spring-core-3/src/main/java/com/baeldung/customannotation/DataAccess.java diff --git a/spring-core-2/src/main/java/com/baeldung/customannotation/DataAccessAnnotationProcessor.java b/spring-core-3/src/main/java/com/baeldung/customannotation/DataAccessAnnotationProcessor.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/customannotation/DataAccessAnnotationProcessor.java rename to spring-core-3/src/main/java/com/baeldung/customannotation/DataAccessAnnotationProcessor.java diff --git a/spring-core-2/src/main/java/com/baeldung/customannotation/DataAccessFieldCallback.java b/spring-core-3/src/main/java/com/baeldung/customannotation/DataAccessFieldCallback.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/customannotation/DataAccessFieldCallback.java rename to spring-core-3/src/main/java/com/baeldung/customannotation/DataAccessFieldCallback.java diff --git a/spring-core-2/src/main/java/com/baeldung/customannotation/GenericDAO.java b/spring-core-3/src/main/java/com/baeldung/customannotation/GenericDAO.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/customannotation/GenericDAO.java rename to spring-core-3/src/main/java/com/baeldung/customannotation/GenericDAO.java diff --git a/spring-core-2/src/main/java/com/baeldung/customscope/TenantBean.java b/spring-core-3/src/main/java/com/baeldung/customscope/TenantBean.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/customscope/TenantBean.java rename to spring-core-3/src/main/java/com/baeldung/customscope/TenantBean.java diff --git a/spring-core-2/src/main/java/com/baeldung/customscope/TenantBeanFactoryPostProcessor.java b/spring-core-3/src/main/java/com/baeldung/customscope/TenantBeanFactoryPostProcessor.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/customscope/TenantBeanFactoryPostProcessor.java rename to spring-core-3/src/main/java/com/baeldung/customscope/TenantBeanFactoryPostProcessor.java diff --git a/spring-core-2/src/main/java/com/baeldung/customscope/TenantBeansConfig.java b/spring-core-3/src/main/java/com/baeldung/customscope/TenantBeansConfig.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/customscope/TenantBeansConfig.java rename to spring-core-3/src/main/java/com/baeldung/customscope/TenantBeansConfig.java diff --git a/spring-core-2/src/main/java/com/baeldung/customscope/TenantScope.java b/spring-core-3/src/main/java/com/baeldung/customscope/TenantScope.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/customscope/TenantScope.java rename to spring-core-3/src/main/java/com/baeldung/customscope/TenantScope.java diff --git a/spring-core-2/src/main/java/com/baeldung/customscope/TenantScopeConfig.java b/spring-core-3/src/main/java/com/baeldung/customscope/TenantScopeConfig.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/customscope/TenantScopeConfig.java rename to spring-core-3/src/main/java/com/baeldung/customscope/TenantScopeConfig.java diff --git a/spring-core-2/src/test/java/com/baeldung/customannotation/Account.java b/spring-core-3/src/test/java/com/baeldung/customannotation/Account.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/customannotation/Account.java rename to spring-core-3/src/test/java/com/baeldung/customannotation/Account.java diff --git a/spring-core-2/src/test/java/com/baeldung/customannotation/BeanWithGenericDAO.java b/spring-core-3/src/test/java/com/baeldung/customannotation/BeanWithGenericDAO.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/customannotation/BeanWithGenericDAO.java rename to spring-core-3/src/test/java/com/baeldung/customannotation/BeanWithGenericDAO.java diff --git a/spring-core-2/src/test/java/com/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java b/spring-core-3/src/test/java/com/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java rename to spring-core-3/src/test/java/com/baeldung/customannotation/DataAccessAnnotationIntegrationTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java b/spring-core-3/src/test/java/com/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java rename to spring-core-3/src/test/java/com/baeldung/customannotation/DataAccessFieldCallbackIntegrationTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/customannotation/Person.java b/spring-core-3/src/test/java/com/baeldung/customannotation/Person.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/customannotation/Person.java rename to spring-core-3/src/test/java/com/baeldung/customannotation/Person.java diff --git a/spring-core-2/src/test/java/com/baeldung/customscope/TenantScopeIntegrationTest.java b/spring-core-3/src/test/java/com/baeldung/customscope/TenantScopeIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/customscope/TenantScopeIntegrationTest.java rename to spring-core-3/src/test/java/com/baeldung/customscope/TenantScopeIntegrationTest.java diff --git a/spring-core-4/README.md b/spring-core-4/README.md index 9da90ac77a..706c330f39 100644 --- a/spring-core-4/README.md +++ b/spring-core-4/README.md @@ -8,4 +8,7 @@ This module contains articles about core Spring functionality - [How to dynamically Autowire a Bean in Spring](https://www.baeldung.com/spring-dynamic-autowire) - [Spring @Import Annotation](https://www.baeldung.com/spring-import-annotation) - [Spring BeanPostProcessor](https://www.baeldung.com/spring-beanpostprocessor) +- [Using @Autowired in Abstract Classes](https://www.baeldung.com/spring-autowired-abstract-class) +- [Running Setup Data on Startup in Spring](https://www.baeldung.com/running-setup-logic-on-startup-in-spring) +- [Constructor Injection in Spring with Lombok](https://www.baeldung.com/spring-injection-lombok) - More articles: [[<-- prev]](/spring-core-3) diff --git a/spring-core-4/pom.xml b/spring-core-4/pom.xml index 299debbc3c..df0b90fef2 100644 --- a/spring-core-4/pom.xml +++ b/spring-core-4/pom.xml @@ -24,11 +24,26 @@ spring-core ${spring.version} + + org.springframework + spring-web + ${spring.version} + + + org.springframework + spring-webmvc + ${spring.version} + org.springframework spring-expression ${spring.version} + + org.projectlombok + lombok + ${lombok.version} + com.google.guava guava @@ -64,6 +79,12 @@ ${assertj-core.version} test + + javax.servlet + javax.servlet-api + 4.0.0 + + diff --git a/spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountConfig.java b/spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountConfig.java new file mode 100644 index 0000000000..d4c960bd68 --- /dev/null +++ b/spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountConfig.java @@ -0,0 +1,28 @@ +package com.baeldung.applicationcontext; + +import org.springframework.context.MessageSource; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.ResourceBundleMessageSource; + +@Configuration +public class AccountConfig { + + @Bean + public AccountService accountService() { + return new AccountService(accountRepository()); + } + + @Bean + public AccountRepository accountRepository() { + return new AccountRepository(); + } + + @Bean + public MessageSource messageSource() { + ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); + messageSource.setBasename("config/messages"); + return messageSource; + } + +} diff --git a/spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountRepository.java b/spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountRepository.java new file mode 100644 index 0000000000..f15475acf3 --- /dev/null +++ b/spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountRepository.java @@ -0,0 +1,5 @@ +package com.baeldung.applicationcontext; + +public class AccountRepository { + +} diff --git a/spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountService.java b/spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountService.java new file mode 100644 index 0000000000..c8b58915a8 --- /dev/null +++ b/spring-core-4/src/main/java/com/baeldung/applicationcontext/AccountService.java @@ -0,0 +1,32 @@ +package com.baeldung.applicationcontext; + +import java.util.Locale; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.MessageSource; + +public class AccountService { + + @Autowired + private AccountRepository accountRepository; + + @Autowired + private MessageSource messageSource; + + public void setAccountRepository(AccountRepository accountRepository) { + this.accountRepository = accountRepository; + } + + public AccountRepository getAccountRepository() { + return accountRepository; + } + + public AccountService(AccountRepository accountRepository) { + this.accountRepository = accountRepository; + } + + public String getAccountName() { + return messageSource.getMessage("account.name", null, Locale.ENGLISH); + } + +} diff --git a/spring-core-4/src/main/java/com/baeldung/applicationcontext/MyWebApplicationInitializer.java b/spring-core-4/src/main/java/com/baeldung/applicationcontext/MyWebApplicationInitializer.java new file mode 100644 index 0000000000..0296910311 --- /dev/null +++ b/spring-core-4/src/main/java/com/baeldung/applicationcontext/MyWebApplicationInitializer.java @@ -0,0 +1,24 @@ +package com.baeldung.applicationcontext; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +public class MyWebApplicationInitializer implements WebApplicationInitializer { + + public void onStartup(ServletContext container) throws ServletException { + AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); + context.register(AccountConfig.class); + context.setServletContext(container); + + ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(context)); + servlet.setLoadOnStartup(1); + + servlet.addMapping("/"); + } + +} diff --git a/spring-core-4/src/main/java/com/baeldung/applicationcontext/MyXmlWebApplicationInitializer.java b/spring-core-4/src/main/java/com/baeldung/applicationcontext/MyXmlWebApplicationInitializer.java new file mode 100644 index 0000000000..fe681f1784 --- /dev/null +++ b/spring-core-4/src/main/java/com/baeldung/applicationcontext/MyXmlWebApplicationInitializer.java @@ -0,0 +1,24 @@ +package com.baeldung.applicationcontext; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.support.XmlWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +public class MyXmlWebApplicationInitializer implements WebApplicationInitializer { + + public void onStartup(ServletContext container) throws ServletException { + XmlWebApplicationContext context = new XmlWebApplicationContext(); + context.setConfigLocation("/WEB-INF/spring/applicationContext.xml"); + context.setServletContext(container); + + ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(context)); + servlet.setLoadOnStartup(1); + + servlet.addMapping("/"); + } + +} diff --git a/spring-core-4/src/main/java/com/baeldung/applicationcontext/UserService.java b/spring-core-4/src/main/java/com/baeldung/applicationcontext/UserService.java new file mode 100644 index 0000000000..b63d6828a7 --- /dev/null +++ b/spring-core-4/src/main/java/com/baeldung/applicationcontext/UserService.java @@ -0,0 +1,10 @@ +package com.baeldung.applicationcontext; + +import org.springframework.stereotype.Component; + +@Component +public class UserService { + + // user service code + +} diff --git a/spring-core/src/main/java/com/baeldung/lombok/ApologizeService.java b/spring-core-4/src/main/java/com/baeldung/lombok/ApologizeService.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/lombok/ApologizeService.java rename to spring-core-4/src/main/java/com/baeldung/lombok/ApologizeService.java diff --git a/spring-core/src/main/java/com/baeldung/lombok/FarewellService.java b/spring-core-4/src/main/java/com/baeldung/lombok/FarewellService.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/lombok/FarewellService.java rename to spring-core-4/src/main/java/com/baeldung/lombok/FarewellService.java diff --git a/spring-core/src/main/java/com/baeldung/lombok/GreetingService.java b/spring-core-4/src/main/java/com/baeldung/lombok/GreetingService.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/lombok/GreetingService.java rename to spring-core-4/src/main/java/com/baeldung/lombok/GreetingService.java diff --git a/spring-core/src/main/java/com/baeldung/lombok/ThankingService.java b/spring-core-4/src/main/java/com/baeldung/lombok/ThankingService.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/lombok/ThankingService.java rename to spring-core-4/src/main/java/com/baeldung/lombok/ThankingService.java diff --git a/spring-core/src/main/java/com/baeldung/lombok/Translator.java b/spring-core-4/src/main/java/com/baeldung/lombok/Translator.java similarity index 100% rename from spring-core/src/main/java/com/baeldung/lombok/Translator.java rename to spring-core-4/src/main/java/com/baeldung/lombok/Translator.java diff --git a/spring-core-2/src/main/java/com/baeldung/sampleabstract/BallService.java b/spring-core-4/src/main/java/com/baeldung/sampleabstract/BallService.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/sampleabstract/BallService.java rename to spring-core-4/src/main/java/com/baeldung/sampleabstract/BallService.java diff --git a/spring-core-2/src/main/java/com/baeldung/sampleabstract/BasketballService.java b/spring-core-4/src/main/java/com/baeldung/sampleabstract/BasketballService.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/sampleabstract/BasketballService.java rename to spring-core-4/src/main/java/com/baeldung/sampleabstract/BasketballService.java diff --git a/spring-core-2/src/main/java/com/baeldung/sampleabstract/DemoApp.java b/spring-core-4/src/main/java/com/baeldung/sampleabstract/DemoApp.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/sampleabstract/DemoApp.java rename to spring-core-4/src/main/java/com/baeldung/sampleabstract/DemoApp.java diff --git a/spring-core-2/src/main/java/com/baeldung/sampleabstract/LogRepository.java b/spring-core-4/src/main/java/com/baeldung/sampleabstract/LogRepository.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/sampleabstract/LogRepository.java rename to spring-core-4/src/main/java/com/baeldung/sampleabstract/LogRepository.java diff --git a/spring-core-2/src/main/java/com/baeldung/sampleabstract/RuleRepository.java b/spring-core-4/src/main/java/com/baeldung/sampleabstract/RuleRepository.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/sampleabstract/RuleRepository.java rename to spring-core-4/src/main/java/com/baeldung/sampleabstract/RuleRepository.java diff --git a/spring-core-2/src/main/java/com/baeldung/startup/AllStrategiesExampleBean.java b/spring-core-4/src/main/java/com/baeldung/startup/AllStrategiesExampleBean.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/startup/AllStrategiesExampleBean.java rename to spring-core-4/src/main/java/com/baeldung/startup/AllStrategiesExampleBean.java diff --git a/spring-core-2/src/main/java/com/baeldung/startup/EventListenerExampleBean.java b/spring-core-4/src/main/java/com/baeldung/startup/EventListenerExampleBean.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/startup/EventListenerExampleBean.java rename to spring-core-4/src/main/java/com/baeldung/startup/EventListenerExampleBean.java diff --git a/spring-core-2/src/main/java/com/baeldung/startup/InitMethodExampleBean.java b/spring-core-4/src/main/java/com/baeldung/startup/InitMethodExampleBean.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/startup/InitMethodExampleBean.java rename to spring-core-4/src/main/java/com/baeldung/startup/InitMethodExampleBean.java diff --git a/spring-core-2/src/main/java/com/baeldung/startup/InitializingBeanExampleBean.java b/spring-core-4/src/main/java/com/baeldung/startup/InitializingBeanExampleBean.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/startup/InitializingBeanExampleBean.java rename to spring-core-4/src/main/java/com/baeldung/startup/InitializingBeanExampleBean.java diff --git a/spring-core-2/src/main/java/com/baeldung/startup/InvalidInitExampleBean.java b/spring-core-4/src/main/java/com/baeldung/startup/InvalidInitExampleBean.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/startup/InvalidInitExampleBean.java rename to spring-core-4/src/main/java/com/baeldung/startup/InvalidInitExampleBean.java diff --git a/spring-core-2/src/main/java/com/baeldung/startup/LogicInConstructorExampleBean.java b/spring-core-4/src/main/java/com/baeldung/startup/LogicInConstructorExampleBean.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/startup/LogicInConstructorExampleBean.java rename to spring-core-4/src/main/java/com/baeldung/startup/LogicInConstructorExampleBean.java diff --git a/spring-core-2/src/main/java/com/baeldung/startup/PostConstructExampleBean.java b/spring-core-4/src/main/java/com/baeldung/startup/PostConstructExampleBean.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/startup/PostConstructExampleBean.java rename to spring-core-4/src/main/java/com/baeldung/startup/PostConstructExampleBean.java diff --git a/spring-core-2/src/main/java/com/baeldung/startup/SpringStartupConfig.java b/spring-core-4/src/main/java/com/baeldung/startup/SpringStartupConfig.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/startup/SpringStartupConfig.java rename to spring-core-4/src/main/java/com/baeldung/startup/SpringStartupConfig.java diff --git a/spring-core-2/src/main/java/com/baeldung/startup/StartupApplicationListenerExample.java b/spring-core-4/src/main/java/com/baeldung/startup/StartupApplicationListenerExample.java similarity index 100% rename from spring-core-2/src/main/java/com/baeldung/startup/StartupApplicationListenerExample.java rename to spring-core-4/src/main/java/com/baeldung/startup/StartupApplicationListenerExample.java diff --git a/spring-core-2/src/main/resources/startupConfig.xml b/spring-core-4/src/main/resources/startupConfig.xml similarity index 100% rename from spring-core-2/src/main/resources/startupConfig.xml rename to spring-core-4/src/main/resources/startupConfig.xml diff --git a/spring-core-4/src/test/java/com/baeldung/applicationcontext/ApplicationContextUnitTest.java b/spring-core-4/src/test/java/com/baeldung/applicationcontext/ApplicationContextUnitTest.java new file mode 100644 index 0000000000..491d5dd9d0 --- /dev/null +++ b/spring-core-4/src/test/java/com/baeldung/applicationcontext/ApplicationContextUnitTest.java @@ -0,0 +1,71 @@ +package com.baeldung.applicationcontext; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import org.junit.Ignore; +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.context.support.FileSystemXmlApplicationContext; + +public class ApplicationContextUnitTest { + + @Test + public void givenAnnotationConfigAppContext_whenSpringConfig_thenMappingSuccess() { + ApplicationContext context = new AnnotationConfigApplicationContext(AccountConfig.class); + AccountService accountService = context.getBean(AccountService.class); + + assertNotNull(accountService); + assertNotNull(accountService.getAccountRepository()); + + ((AnnotationConfigApplicationContext) context).close(); + } + + @Test + public void givenClasspathXmlAppContext_whenAnnotationConfig_thenMappingSuccess() { + ApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext/user-bean-config.xml"); + UserService userService = context.getBean(UserService.class); + + assertNotNull(userService); + + ((ClassPathXmlApplicationContext) context).close(); + } + + @Test + @Ignore + public void givenFileXmlAppContext_whenXMLConfig_thenMappingSuccess() { + String path = "D:/workspaces/Baeldung/tutorials/spring-core-4/src/test/resources/applicationcontext/account-bean-config.xml"; + + ApplicationContext context = new FileSystemXmlApplicationContext(path); + AccountService accountService = context.getBean("accountService", AccountService.class); + + assertNotNull(accountService); + assertNotNull(accountService.getAccountRepository()); + + ((FileSystemXmlApplicationContext) context).close(); + } + + @Test + public void givenClasspathXmlAppContext_whenXMLConfig_thenMappingSuccess() { + ApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext/account-bean-config.xml"); + AccountService accountService = context.getBean("accountService", AccountService.class); + + assertNotNull(accountService); + assertNotNull(accountService.getAccountRepository()); + + ((ClassPathXmlApplicationContext) context).close(); + } + + @Test + public void givenMessagesInFile_whenMessageResourceUsed_thenReadMessage() { + ApplicationContext context = new AnnotationConfigApplicationContext(AccountConfig.class); + AccountService accountService = context.getBean(AccountService.class); + + assertEquals("TestAccount", accountService.getAccountName()); + + ((AnnotationConfigApplicationContext) context).close(); + } + +} diff --git a/spring-core/src/test/java/com/baeldung/lombok/ApologizeServiceAutowiringIntegrationTest.java b/spring-core-4/src/test/java/com/baeldung/lombok/ApologizeServiceAutowiringIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/lombok/ApologizeServiceAutowiringIntegrationTest.java rename to spring-core-4/src/test/java/com/baeldung/lombok/ApologizeServiceAutowiringIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/lombok/ApologizeServiceIntegrationTest.java b/spring-core-4/src/test/java/com/baeldung/lombok/ApologizeServiceIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/lombok/ApologizeServiceIntegrationTest.java rename to spring-core-4/src/test/java/com/baeldung/lombok/ApologizeServiceIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/lombok/FarewellAutowiringIntegrationTest.java b/spring-core-4/src/test/java/com/baeldung/lombok/FarewellAutowiringIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/lombok/FarewellAutowiringIntegrationTest.java rename to spring-core-4/src/test/java/com/baeldung/lombok/FarewellAutowiringIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/lombok/FarewellServiceIntegrationTest.java b/spring-core-4/src/test/java/com/baeldung/lombok/FarewellServiceIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/lombok/FarewellServiceIntegrationTest.java rename to spring-core-4/src/test/java/com/baeldung/lombok/FarewellServiceIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/lombok/GreetingServiceIntegrationTest.java b/spring-core-4/src/test/java/com/baeldung/lombok/GreetingServiceIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/lombok/GreetingServiceIntegrationTest.java rename to spring-core-4/src/test/java/com/baeldung/lombok/GreetingServiceIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/lombok/TestConfig.java b/spring-core-4/src/test/java/com/baeldung/lombok/TestConfig.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/lombok/TestConfig.java rename to spring-core-4/src/test/java/com/baeldung/lombok/TestConfig.java diff --git a/spring-core/src/test/java/com/baeldung/lombok/ThankingServiceAutowiringIntegrationTest.java b/spring-core-4/src/test/java/com/baeldung/lombok/ThankingServiceAutowiringIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/lombok/ThankingServiceAutowiringIntegrationTest.java rename to spring-core-4/src/test/java/com/baeldung/lombok/ThankingServiceAutowiringIntegrationTest.java diff --git a/spring-core/src/test/java/com/baeldung/lombok/ThankingServiceIntegrationTest.java b/spring-core-4/src/test/java/com/baeldung/lombok/ThankingServiceIntegrationTest.java similarity index 100% rename from spring-core/src/test/java/com/baeldung/lombok/ThankingServiceIntegrationTest.java rename to spring-core-4/src/test/java/com/baeldung/lombok/ThankingServiceIntegrationTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/startup/SpringStartupIntegrationTest.java b/spring-core-4/src/test/java/com/baeldung/startup/SpringStartupIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/startup/SpringStartupIntegrationTest.java rename to spring-core-4/src/test/java/com/baeldung/startup/SpringStartupIntegrationTest.java diff --git a/spring-core-2/src/test/java/com/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java b/spring-core-4/src/test/java/com/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java similarity index 100% rename from spring-core-2/src/test/java/com/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java rename to spring-core-4/src/test/java/com/baeldung/startup/SpringStartupXMLConfigIntegrationTest.java diff --git a/spring-core-4/src/test/resources/applicationcontext/account-bean-config.xml b/spring-core-4/src/test/resources/applicationcontext/account-bean-config.xml new file mode 100644 index 0000000000..eef434928f --- /dev/null +++ b/spring-core-4/src/test/resources/applicationcontext/account-bean-config.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/spring-core-4/src/test/resources/applicationcontext/user-bean-config.xml b/spring-core-4/src/test/resources/applicationcontext/user-bean-config.xml new file mode 100644 index 0000000000..9779d64270 --- /dev/null +++ b/spring-core-4/src/test/resources/applicationcontext/user-bean-config.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/spring-core-4/src/test/resources/config/messages.properties b/spring-core-4/src/test/resources/config/messages.properties new file mode 100644 index 0000000000..7d5a4baa73 --- /dev/null +++ b/spring-core-4/src/test/resources/config/messages.properties @@ -0,0 +1 @@ +account.name=TestAccount diff --git a/spring-core/README.md b/spring-core/README.md index 1f3dcb783b..b8d46f6b34 100644 --- a/spring-core/README.md +++ b/spring-core/README.md @@ -3,10 +3,8 @@ This module contains articles about core Spring functionality ### Relevant Articles: -- [Wiring in Spring: @Autowired, @Resource and @Inject](https://www.baeldung.com/spring-annotations-resource-inject-autowire) -- [Constructor Injection in Spring with Lombok](https://www.baeldung.com/spring-injection-lombok) + - [Introduction to Spring’s StreamUtils](https://www.baeldung.com/spring-stream-utils) -- [XML-Based Injection in Spring](https://www.baeldung.com/spring-xml-injection) - [A Quick Guide to the Spring @Lazy Annotation](https://www.baeldung.com/spring-lazy-annotation) - [BeanNameAware and BeanFactoryAware Interfaces in Spring](https://www.baeldung.com/spring-bean-name-factory-aware) - [Access a File from the Classpath in a Spring Application](https://www.baeldung.com/spring-classpath-file-access) diff --git a/spring-di-2/README.md b/spring-di-2/README.md new file mode 100644 index 0000000000..15249efa7c --- /dev/null +++ b/spring-di-2/README.md @@ -0,0 +1,11 @@ +## Spring Dependency Injection + +This module contains articles about dependency injection with Spring + +### Relevant Articles + +- [Injecting Spring Beans into Unmanaged Objects](https://www.baeldung.com/spring-inject-bean-into-unmanaged-objects) +- [Injecting a Value in a Static Field in Spring](https://www.baeldung.com/spring-inject-static-field) +- [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) +- More articles: [[<-- prev]](/spring-di) \ No newline at end of file diff --git a/spring-di-2/pom.xml b/spring-di-2/pom.xml index 9b703d55d9..4dd92ca18c 100644 --- a/spring-di-2/pom.xml +++ b/spring-di-2/pom.xml @@ -25,11 +25,26 @@ spring-boot-starter-data-jpa ${spring-boot.version} + + org.springframework.boot + spring-boot-starter-web + ${spring-boot.version} + org.springframework spring-aspects ${spring.version} + + org.projectlombok + lombok + ${lombok.version} + + + javax.inject + javax.inject + ${javax.inject.version} + @@ -61,5 +76,6 @@ 2.3.1.RELEASE 1.11 + 1 \ No newline at end of file diff --git a/spring-core-3/src/main/java/com/baeldung/collection/BaeldungBean.java b/spring-di-2/src/main/java/com/baeldung/collection/BaeldungBean.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/collection/BaeldungBean.java rename to spring-di-2/src/main/java/com/baeldung/collection/BaeldungBean.java diff --git a/spring-core-3/src/main/java/com/baeldung/collection/CollectionConfig.java b/spring-di-2/src/main/java/com/baeldung/collection/CollectionConfig.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/collection/CollectionConfig.java rename to spring-di-2/src/main/java/com/baeldung/collection/CollectionConfig.java diff --git a/spring-core-3/src/main/java/com/baeldung/collection/CollectionInjectionDemo.java b/spring-di-2/src/main/java/com/baeldung/collection/CollectionInjectionDemo.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/collection/CollectionInjectionDemo.java rename to spring-di-2/src/main/java/com/baeldung/collection/CollectionInjectionDemo.java diff --git a/spring-core-3/src/main/java/com/baeldung/collection/CollectionsBean.java b/spring-di-2/src/main/java/com/baeldung/collection/CollectionsBean.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/collection/CollectionsBean.java rename to spring-di-2/src/main/java/com/baeldung/collection/CollectionsBean.java diff --git a/spring-di/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java b/spring-di-2/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java similarity index 100% rename from spring-di/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java rename to spring-di-2/src/main/java/com/baeldung/dependency/AnotherArbitraryDependency.java diff --git a/spring-di/src/main/java/com/baeldung/dependency/ArbitraryDependency.java b/spring-di-2/src/main/java/com/baeldung/dependency/ArbitraryDependency.java similarity index 100% rename from spring-di/src/main/java/com/baeldung/dependency/ArbitraryDependency.java rename to spring-di-2/src/main/java/com/baeldung/dependency/ArbitraryDependency.java diff --git a/spring-di/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java b/spring-di-2/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java similarity index 100% rename from spring-di/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java rename to spring-di-2/src/main/java/com/baeldung/dependency/YetAnotherArbitraryDependency.java diff --git a/spring-core-3/src/main/java/com/baeldung/staticvalue/injection/Application.java b/spring-di-2/src/main/java/com/baeldung/staticvalue/injection/Application.java similarity index 72% rename from spring-core-3/src/main/java/com/baeldung/staticvalue/injection/Application.java rename to spring-di-2/src/main/java/com/baeldung/staticvalue/injection/Application.java index 45c47c955f..b4222ddcc9 100644 --- a/spring-core-3/src/main/java/com/baeldung/staticvalue/injection/Application.java +++ b/spring-di-2/src/main/java/com/baeldung/staticvalue/injection/Application.java @@ -2,9 +2,10 @@ package com.baeldung.staticvalue.injection; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.context.annotation.PropertySource; -@SpringBootApplication +@SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) @PropertySource("/application.properties") public class Application { diff --git a/spring-core-3/src/main/java/com/baeldung/staticvalue/injection/PropertyController.java b/spring-di-2/src/main/java/com/baeldung/staticvalue/injection/PropertyController.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/staticvalue/injection/PropertyController.java rename to spring-di-2/src/main/java/com/baeldung/staticvalue/injection/PropertyController.java diff --git a/spring-di-2/src/main/resources/application.properties b/spring-di-2/src/main/resources/application.properties new file mode 100644 index 0000000000..828fa9cd2a --- /dev/null +++ b/spring-di-2/src/main/resources/application.properties @@ -0,0 +1 @@ +name = Inject a value to a static field diff --git a/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestAutowiredName.java similarity index 85% rename from spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestAutowiredName.java index 48c4495465..3046e68829 100644 --- a/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredName.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestAutowiredName.java @@ -1,4 +1,4 @@ -package com.baeldung.configuration; +package com.baeldung.wiring.configuration; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; diff --git a/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestAutowiredQualifier.java similarity index 94% rename from spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestAutowiredQualifier.java index ef6690ab4b..33969ea69d 100644 --- a/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredQualifier.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestAutowiredQualifier.java @@ -1,9 +1,10 @@ -package com.baeldung.configuration; +package com.baeldung.wiring.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import com.baeldung.dependency.AnotherArbitraryDependency; import com.baeldung.dependency.ArbitraryDependency; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; @Configuration public class ApplicationContextTestAutowiredQualifier { diff --git a/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestAutowiredType.java similarity index 90% rename from spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestAutowiredType.java index 240bc466b7..24cdd978e4 100644 --- a/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestAutowiredType.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestAutowiredType.java @@ -1,9 +1,10 @@ -package com.baeldung.configuration; +package com.baeldung.wiring.configuration; -import com.baeldung.dependency.ArbitraryDependency; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import com.baeldung.dependency.ArbitraryDependency; + @Configuration public class ApplicationContextTestAutowiredType { diff --git a/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestInjectName.java similarity index 92% rename from spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestInjectName.java index 851aa0b8ee..cb465d0183 100644 --- a/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectName.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestInjectName.java @@ -1,9 +1,10 @@ -package com.baeldung.configuration; +package com.baeldung.wiring.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import com.baeldung.dependency.ArbitraryDependency; import com.baeldung.dependency.YetAnotherArbitraryDependency; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; @Configuration public class ApplicationContextTestInjectName { diff --git a/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestInjectQualifier.java similarity index 93% rename from spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestInjectQualifier.java index 59af5a91bb..c2a63dac9e 100644 --- a/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectQualifier.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestInjectQualifier.java @@ -1,9 +1,10 @@ -package com.baeldung.configuration; +package com.baeldung.wiring.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import com.baeldung.dependency.AnotherArbitraryDependency; import com.baeldung.dependency.ArbitraryDependency; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; @Configuration public class ApplicationContextTestInjectQualifier { diff --git a/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestInjectType.java similarity index 90% rename from spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestInjectType.java index 1e1f01f269..15a75b8f2d 100644 --- a/spring-di/src/test/java/com/baeldung/configuration/ApplicationContextTestInjectType.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestInjectType.java @@ -1,9 +1,10 @@ -package com.baeldung.configuration; +package com.baeldung.wiring.configuration; -import com.baeldung.dependency.ArbitraryDependency; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import com.baeldung.dependency.ArbitraryDependency; + @Configuration public class ApplicationContextTestInjectType { diff --git a/spring-core/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestResourceNameType.java similarity index 89% rename from spring-core/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestResourceNameType.java index cb1b5981e8..708ade7647 100644 --- a/spring-core/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceNameType.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestResourceNameType.java @@ -1,4 +1,4 @@ -package com.baeldung.configuration; +package com.baeldung.wiring.configuration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-core/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestResourceQualifier.java similarity index 92% rename from spring-core/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestResourceQualifier.java index c9aa2f4a7d..87864b183e 100644 --- a/spring-core/src/test/java/com/baeldung/configuration/ApplicationContextTestResourceQualifier.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/ApplicationContextTestResourceQualifier.java @@ -1,4 +1,4 @@ -package com.baeldung.configuration; +package com.baeldung.wiring.configuration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-di/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/autowired/FieldAutowiredIntegrationTest.java similarity index 87% rename from spring-di/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/autowired/FieldAutowiredIntegrationTest.java index a78799f1d9..f3f065ed4d 100644 --- a/spring-di/src/test/java/com/baeldung/autowired/FieldAutowiredIntegrationTest.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/autowired/FieldAutowiredIntegrationTest.java @@ -1,7 +1,8 @@ -package com.baeldung.autowired; +package com.baeldung.wiring.configuration.autowired; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; -import com.baeldung.configuration.ApplicationContextTestAutowiredType; -import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -9,8 +10,8 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import com.baeldung.dependency.ArbitraryDependency; +import com.baeldung.wiring.configuration.ApplicationContextTestAutowiredType; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( diff --git a/spring-di/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/autowired/FieldAutowiredNameIntegrationTest.java similarity index 88% rename from spring-di/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/autowired/FieldAutowiredNameIntegrationTest.java index 8f09e73c33..199241c7e2 100644 --- a/spring-di/src/test/java/com/baeldung/autowired/FieldAutowiredNameIntegrationTest.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/autowired/FieldAutowiredNameIntegrationTest.java @@ -1,7 +1,8 @@ -package com.baeldung.autowired; +package com.baeldung.wiring.configuration.autowired; -import com.baeldung.configuration.ApplicationContextTestAutowiredName; import com.baeldung.dependency.ArbitraryDependency; +import com.baeldung.wiring.configuration.ApplicationContextTestAutowiredName; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; diff --git a/spring-di/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/autowired/FieldQualifierAutowiredIntegrationTest.java similarity index 91% rename from spring-di/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/autowired/FieldQualifierAutowiredIntegrationTest.java index 01317aef6f..081fbf24ad 100644 --- a/spring-di/src/test/java/com/baeldung/autowired/FieldQualifierAutowiredIntegrationTest.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/autowired/FieldQualifierAutowiredIntegrationTest.java @@ -1,7 +1,8 @@ -package com.baeldung.autowired; +package com.baeldung.wiring.configuration.autowired; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; -import com.baeldung.configuration.ApplicationContextTestAutowiredQualifier; -import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -10,8 +11,8 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import com.baeldung.dependency.ArbitraryDependency; +import com.baeldung.wiring.configuration.ApplicationContextTestAutowiredQualifier; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( diff --git a/spring-di/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/inject/FieldByNameInjectIntegrationTest.java similarity index 89% rename from spring-di/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/inject/FieldByNameInjectIntegrationTest.java index f5897febab..d1a75d73ea 100644 --- a/spring-di/src/test/java/com/baeldung/inject/FieldByNameInjectIntegrationTest.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/inject/FieldByNameInjectIntegrationTest.java @@ -1,18 +1,19 @@ -package com.baeldung.inject; +package com.baeldung.wiring.configuration.inject; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import javax.inject.Inject; +import javax.inject.Named; -import com.baeldung.configuration.ApplicationContextTestInjectName; -import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import javax.inject.Inject; -import javax.inject.Named; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import com.baeldung.dependency.ArbitraryDependency; +import com.baeldung.wiring.configuration.ApplicationContextTestInjectName; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( diff --git a/spring-di/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/inject/FieldInjectIntegrationTest.java similarity index 88% rename from spring-di/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/inject/FieldInjectIntegrationTest.java index 45b7c8015c..995f560701 100644 --- a/spring-di/src/test/java/com/baeldung/inject/FieldInjectIntegrationTest.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/inject/FieldInjectIntegrationTest.java @@ -1,17 +1,18 @@ -package com.baeldung.inject; +package com.baeldung.wiring.configuration.inject; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import javax.inject.Inject; -import com.baeldung.configuration.ApplicationContextTestInjectType; -import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import javax.inject.Inject; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import com.baeldung.dependency.ArbitraryDependency; +import com.baeldung.wiring.configuration.ApplicationContextTestInjectType; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( diff --git a/spring-di/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/inject/FieldQualifierInjectIntegrationTest.java similarity index 91% rename from spring-di/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/inject/FieldQualifierInjectIntegrationTest.java index 0fd6a0e4c1..67fa2bf3d4 100644 --- a/spring-di/src/test/java/com/baeldung/inject/FieldQualifierInjectIntegrationTest.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/inject/FieldQualifierInjectIntegrationTest.java @@ -1,7 +1,10 @@ -package com.baeldung.inject; +package com.baeldung.wiring.configuration.inject; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import javax.inject.Inject; -import com.baeldung.configuration.ApplicationContextTestInjectQualifier; -import com.baeldung.dependency.ArbitraryDependency; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Qualifier; @@ -9,10 +12,8 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import javax.inject.Inject; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import com.baeldung.dependency.ArbitraryDependency; +import com.baeldung.wiring.configuration.ApplicationContextTestInjectQualifier; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader = AnnotationConfigContextLoader.class, diff --git a/spring-core/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/FieldResourceInjectionIntegrationTest.java similarity index 86% rename from spring-core/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/FieldResourceInjectionIntegrationTest.java index 63a25cb499..938d557939 100644 --- a/spring-core/src/test/java/com/baeldung/resource/FieldResourceInjectionIntegrationTest.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/FieldResourceInjectionIntegrationTest.java @@ -1,17 +1,19 @@ -package com.baeldung.resource; +package com.baeldung.wiring.configuration.resource; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.File; + +import javax.annotation.Resource; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import javax.annotation.Resource; -import java.io.File; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import com.baeldung.wiring.configuration.ApplicationContextTestResourceNameType; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration( diff --git a/spring-core/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/MethodByQualifierResourceIntegrationTest.java similarity index 91% rename from spring-core/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/MethodByQualifierResourceIntegrationTest.java index f5bb9f10cf..f49bf70aba 100644 --- a/spring-core/src/test/java/com/baeldung/resource/MethodByQualifierResourceIntegrationTest.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/MethodByQualifierResourceIntegrationTest.java @@ -1,6 +1,5 @@ -package com.baeldung.resource; +package com.baeldung.wiring.configuration.resource; -import com.baeldung.configuration.ApplicationContextTestResourceQualifier; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Qualifier; @@ -8,6 +7,8 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.wiring.configuration.ApplicationContextTestResourceQualifier; + import javax.annotation.Resource; import java.io.File; diff --git a/spring-core/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/MethodByTypeResourceIntegrationTest.java similarity index 87% rename from spring-core/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/MethodByTypeResourceIntegrationTest.java index 171cbfea47..aecd02a1d5 100644 --- a/spring-core/src/test/java/com/baeldung/resource/MethodByTypeResourceIntegrationTest.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/MethodByTypeResourceIntegrationTest.java @@ -1,12 +1,13 @@ -package com.baeldung.resource; +package com.baeldung.wiring.configuration.resource; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.wiring.configuration.ApplicationContextTestResourceNameType; + import javax.annotation.Resource; import java.io.File; diff --git a/spring-core/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/MethodResourceInjectionIntegrationTest.java similarity index 88% rename from spring-core/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/MethodResourceInjectionIntegrationTest.java index 2e1c3c39a9..4ef9368c28 100644 --- a/spring-core/src/test/java/com/baeldung/resource/MethodResourceInjectionIntegrationTest.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/MethodResourceInjectionIntegrationTest.java @@ -1,12 +1,13 @@ -package com.baeldung.resource; +package com.baeldung.wiring.configuration.resource; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.wiring.configuration.ApplicationContextTestResourceNameType; + import javax.annotation.Resource; import java.io.File; diff --git a/spring-core/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/NamedResourceIntegrationTest.java similarity index 86% rename from spring-core/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/NamedResourceIntegrationTest.java index d52660e9b8..4339194f63 100644 --- a/spring-core/src/test/java/com/baeldung/resource/NamedResourceIntegrationTest.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/NamedResourceIntegrationTest.java @@ -1,12 +1,13 @@ -package com.baeldung.resource; +package com.baeldung.wiring.configuration.resource; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.wiring.configuration.ApplicationContextTestResourceNameType; + import javax.annotation.Resource; import java.io.File; diff --git a/spring-core/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/QualifierResourceInjectionIntegrationTest.java similarity index 90% rename from spring-core/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/QualifierResourceInjectionIntegrationTest.java index 3f812350c9..cc8c669757 100644 --- a/spring-core/src/test/java/com/baeldung/resource/QualifierResourceInjectionIntegrationTest.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/QualifierResourceInjectionIntegrationTest.java @@ -1,6 +1,5 @@ -package com.baeldung.resource; +package com.baeldung.wiring.configuration.resource; -import com.baeldung.configuration.ApplicationContextTestResourceQualifier; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Qualifier; @@ -8,6 +7,8 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.wiring.configuration.ApplicationContextTestResourceQualifier; + import javax.annotation.Resource; import java.io.File; diff --git a/spring-core/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/SetterResourceInjectionIntegrationTest.java similarity index 88% rename from spring-core/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java rename to spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/SetterResourceInjectionIntegrationTest.java index ae13b2336a..90c8677bff 100644 --- a/spring-core/src/test/java/com/baeldung/resource/SetterResourceInjectionIntegrationTest.java +++ b/spring-di-2/src/test/java/com/baeldung/wiring/configuration/resource/SetterResourceInjectionIntegrationTest.java @@ -1,12 +1,13 @@ -package com.baeldung.resource; +package com.baeldung.wiring.configuration.resource; -import com.baeldung.configuration.ApplicationContextTestResourceNameType; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.wiring.configuration.ApplicationContextTestResourceNameType; + import javax.annotation.Resource; import java.io.File; diff --git a/spring-di/README.md b/spring-di/README.md index 7571b12916..d470768f16 100644 --- a/spring-di/README.md +++ b/spring-di/README.md @@ -13,3 +13,5 @@ This module contains articles about dependency injection with Spring - [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)