Example Spring 4 – Java Based Configuration

spring example

This example presents the basic concept of using in Spring the Java based configuration.

The technologies used are :
– Spring 4.3.4
– JDK 1.8
– Maven 3.3.9

You can convert this example to an Eclipse IDE project by going to folder where is the pom.xml is, and use the command :

mvn eclipse:eclipse
package javaspringexamples.spring.ioc.configuration.java;

/**
 * 
 * @author mounir.sahrani@gmail.com
 *
 */
public class User {

	private int id;
	private String fisrtName;
	private String lastName;
	private boolean Accountlocked;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getFisrtName() {
		return fisrtName;
	}

	public void setFisrtName(String fisrtName) {
		this.fisrtName = fisrtName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public boolean isAccountlocked() {
		return Accountlocked;
	}

	public void setAccountlocked(boolean accountlocked) {
		Accountlocked = accountlocked;
	}
}
package javaspringexamples.spring.ioc.configuration.java;

/**
 * 
 * @author mounir.sahrani@gmail.com
 *
 */
public interface UserDao {

	User find(int userId);

	void insert(User user);

	void update(User user);

	void delete(int userId);

	void lockAccount(int userId, boolean locked);

}
package javaspringexamples.spring.ioc.configuration.java;

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

/**
 * 
 * @author mounir.sahrani@gmail.com
 *
 */
public class UserDaoInMemoryImpl implements UserDao {

	private Map<Integer, User> usersMap = new HashMap<>();

	{
		User user1 = new User();
		user1.setId(1);
		user1.setFisrtName("FirstName 1");
		user1.setLastName("LastName 1");
		user1.setAccountlocked(false);

		User user2 = new User();
		user2.setId(2);
		user2.setFisrtName("FirstName 2");
		user2.setLastName("LastName 2");
		user2.setAccountlocked(false);

		usersMap.put(user1.getId(), user1);
		usersMap.put(user2.getId(), user2);

	}

	@Override
	public void insert(User user) {
		usersMap.put(user.getId(), user);
	}

	@Override
	public void update(User user) {
		usersMap.put(user.getId(), user);
	}

	@Override
	public void delete(int userId) {
		usersMap.remove(userId);
	}

	@Override
	public User find(int userId) {
		return usersMap.get(userId);
	}

	@Override
	public void lockAccount(int userId, boolean locked) {
		User user = usersMap.get(userId);
		user.setAccountlocked(locked);
		update(user);
	}
}
package javaspringexamples.spring.ioc.configuration.java;

/**
 * 
 * @author mounir.sahrani@gmail.com
 *
 */
public interface UserService {

	String getUserinformation(int userId);

	void lockAccountUser(int userId);

	void unlockAccountUser(int userId);
}

package javaspringexamples.spring.ioc.configuration.java;

/**
 * 
 * @author mounir.sahrani@gmail.com
 *
 */
public class UserServiceImpl implements UserService {
	private UserDao userDao;

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	@Override
	public void lockAccountUser(int userId) {
		userDao.lockAccount(userId, true);
	}

	@Override
	public void unlockAccountUser(int userId) {
		userDao.lockAccount(userId, false);
	}

	@Override
	public String getUserinformation(int userId) {
		User user = userDao.find(userId);
		return user.getFisrtName() + " - " + user.getLastName() + " - " + user.isAccountlocked();
	}
}
package javaspringexamples.spring.ioc.configuration.java;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 
 * @author mounir.sahrani@gmail.com
 *
 */
@Configuration
public class JavaConfiguration {

	@Bean
	public UserService userService() {
		UserServiceImpl bean = new UserServiceImpl();
		bean.setUserDao(userDao());
		return bean;
	}

	@Bean
	public UserDao userDao() {
		UserDaoInMemoryImpl bean = new UserDaoInMemoryImpl();
		return bean;
	}
}

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>javaspringexamples.spring</groupId>
	<artifactId>example-Java-Based-Configuration</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>example Java Based Configuration</name>

	<properties>
		<springframework.version>4.3.4.RELEASE</springframework.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${springframework.version}</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.6.0</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
package javaspringexamples.spring.ioc.configuration.java;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * 
 * @author mounir.sahrani@gmail.com
 *
 */
public class Main {

	public static void main(String[] args) {
		AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(JavaConfiguration.class);
		UserService userService = applicationContext.getBean("userService", UserService.class);

		System.out.println("User1 Informations: " + userService.getUserinformation(1));
		System.out.println("User2 Informations: " + userService.getUserinformation(2));

		System.out.println("Locking User1 account");
		userService.lockAccountUser(1);
		System.out.println("User1 Informations: " + userService.getUserinformation(1));
	}

}

Get the sources of the example from the following GitHub url

Or Download a .zip file