Pages

Monday, 16 May 2022

Learn Spring Framework the hard way (1) First Spring Framework app without maven

 1. Download Spring Framework

Official distribution of Spring Framework can be found at 
https://repo.spring.io/ui/native/release/org/springframework/spring/

e.g. spring-5.3.20-dist.zip

$ unzip spring-5.3.20-dist.zip
$ ls  spring-framework-5.3.20/libs | head -10
spring-aop-5.3.20.jar
spring-aop-5.3.20-javadoc.jar
spring-aop-5.3.20-sources.jar
spring-aspects-5.3.20.jar
spring-aspects-5.3.20-javadoc.jar
spring-aspects-5.3.20-sources.jar
spring-beans-5.3.20.jar
spring-beans-5.3.20-javadoc.jar
spring-beans-5.3.20-sources.jar
spring-context-5.3.20.jar

There are 3 jar files for each package, we only need one of them. Copy the needed jar files into another folder "lib" for use.

$ ls lib/ | head -10
spring-aop-5.3.20.jar
spring-aspects-5.3.20.jar
spring-beans-5.3.20.jar
spring-context-5.3.20.jar
spring-context-indexer-5.3.20.jar
spring-context-support-5.3.20.jar
spring-core-5.3.20.jar
spring-expression-5.3.20.jar
spring-instrument-5.3.20.jar
spring-jcl-5.3.20.jar

2. Create an App class

$ cat App.java
public class App
{
    public void run(){
        System.out.println("App is running...");
    }
}

3. Create 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"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">

 <!-- We can define our beans here -->
 <bean id="app" class="App"></bean>
</beans>

4. Create a bean by IoC

$ cat Test.java
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
    public static void main(String[] args){
       ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
       App app = (App)context.getBean("app");
       app.run();
    }
}

$ ls -F
App.java  beans.xml  lib/  Test.java

5 Compile

$ javac App.java
$ javac -cp './lib/*':. Test.java

6 Run it

$ java -cp './lib/*':. Test
App is running...




No comments:

Post a Comment