Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
JerryWang
Advisor
Advisor

Based on the learning from An example of building Java project using Maven we can now use Maven to do more practical task.

I plan to create a Hello World application based on Spring framework. Instead of manually downloading Spring framework jar files and configured the usage of those jars into my Java project, I can now leverage Maven to make the whole process run automatically.


Install m2e - Maven integration plugin for Eclipse:



And then create a new Java project, and you can easily convert this project to a Maven project via context menu:



Once converted, you can then declare the dependency by clicking pom.xml and choose "Maven->Add Dependency" from context menu:



Enter group id, artifact id and version accordingly. Once done, the XML content should look as below:



<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.sap.MavenSandbox</groupId>
<artifactId>MavenSandbox</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.6.RELEASE</version>
</dependency>
</dependencies>
</project>

Trigger a build via mvn clean install, and Maven will automatically download the necessary jars of Spring framework and store them to .m2 folder.



Now we can start programming in Spring.


My project has the following hierarchy:



All missing import could be correctly parsed and easily fixed now.



If you would like to do some debugging on Spring framework source code, you can also download the related source code very easily via "Maven->Download Sources".



After that you could just set a breakpoint on the constructor of HelloWorld class and then study how Spring instantiates the instance of this class configured in beans.xml via reflection:




The source code of files used in the project


HelloWorld.java



package main.java.com.sap;
public class HelloWorld {
private String message;
public void setMessage(String message){
this.message = message;
}
public HelloWorld(){
System.out.println("in constructor");
}

public void getMessage(){
System.out.println("Your Message : " + message);
}
}

MavenSandbox.java



package main.java.com.sap;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MavenSandbox {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
obj.getMessage();
}
public String hello(){
return "Hello world";
}
}

MavenSandboxTest.java



package test.java.com.sap;
import static org.junit.Assert.assertEquals;
import main.java.com.sap.MavenSandbox;
import org.junit.Test;
public class MavenSandboxTest {
@Test
public void test() {
MavenSandbox tool = new MavenSandbox();
assertEquals(tool.hello(),"Hello world");
}
}

beans.xml



<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="helloWorld" class="main.java.com.sap.HelloWorld">
<property name="message" value="Hello World!"/>
</bean>
</beans>