summaryrefslogtreecommitdiff
path: root/spring-framework
diff options
context:
space:
mode:
authorKamal Wickramanayake <kamal@inbox.lk>2026-05-10 14:23:46 +0530
committerKamal Wickramanayake <kamal@inbox.lk>2026-05-10 14:23:46 +0530
commitb1d598a2f02819bc127d0d3522dc7ac91b4dee65 (patch)
treec268db6b49531004e353c5a4ada736bb703a3b96 /spring-framework
parenta299226547b15de587dad614f07ce459d01f3601 (diff)
Added Spring sample application related to structure
Diffstat (limited to 'spring-framework')
-rw-r--r--spring-framework/spring-task-manager-structure/.gitignore9
-rw-r--r--spring-framework/spring-task-manager-structure/pom.xml42
-rw-r--r--spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/App.java11
-rw-r--r--spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/Task.java5
-rw-r--r--spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManager.java11
-rw-r--r--spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerApp.java20
-rw-r--r--spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerImpl.java20
-rw-r--r--spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TextUI.java18
-rw-r--r--spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/TaskDAO.java10
-rw-r--r--spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/jdbc/JDBCTaskDAO.java35
-rw-r--r--spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/applicationContext.xml34
-rw-r--r--spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/jdbc.properties9
12 files changed, 224 insertions, 0 deletions
diff --git a/spring-framework/spring-task-manager-structure/.gitignore b/spring-framework/spring-task-manager-structure/.gitignore
new file mode 100644
index 0000000..ec4e05e
--- /dev/null
+++ b/spring-framework/spring-task-manager-structure/.gitignore
@@ -0,0 +1,9 @@
+# Eclipse
+bin
+.settings
+.metadata
+.classpath
+.project
+
+# Maven
+target
diff --git a/spring-framework/spring-task-manager-structure/pom.xml b/spring-framework/spring-task-manager-structure/pom.xml
new file mode 100644
index 0000000..6a3307d
--- /dev/null
+++ b/spring-framework/spring-task-manager-structure/pom.xml
@@ -0,0 +1,42 @@
+<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>
+
+ <parent>
+ <groupId>com.example.spring</groupId>
+ <artifactId>base-config</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <relativePath>../00-config</relativePath>
+ </parent>
+
+ <artifactId>bank-jdbc-ds-transaction</artifactId>
+ <packaging>jar</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ <version>${springVersion}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-dbcp2</artifactId>
+ <version>${commonsDBCP2Version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mariadb.jdbc</groupId>
+ <artifactId>mariadb-java-client</artifactId>
+ <version>${mariadbClientVersion}</version>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/App.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/App.java
new file mode 100644
index 0000000..0df54bc
--- /dev/null
+++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/App.java
@@ -0,0 +1,11 @@
+package com.example.spring;
+
+import com.example.spring.task.TaskManagerApp;
+
+public class App {
+ public static void main(String[] args) {
+ // Actually, BankApp is the class with the main method.
+ // It should have been executed directly instead of this class.
+ TaskManagerApp.main(args);
+ }
+}
diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/Task.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/Task.java
new file mode 100644
index 0000000..9d112f7
--- /dev/null
+++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/Task.java
@@ -0,0 +1,5 @@
+package com.example.spring.task;
+
+public class Task {
+
+}
diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManager.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManager.java
new file mode 100644
index 0000000..9e4cbf4
--- /dev/null
+++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManager.java
@@ -0,0 +1,11 @@
+package com.example.spring.task;
+
+/**
+ * Business logic operations.
+ * Only method signatures are defined.
+ */
+public interface TaskManager {
+ // Method signatures
+ public void create(Task task);
+
+}
diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerApp.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerApp.java
new file mode 100644
index 0000000..0e2c65d
--- /dev/null
+++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerApp.java
@@ -0,0 +1,20 @@
+package com.example.spring.task;
+
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class TaskManagerApp {
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+
+ AbstractApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {"classpath:META-INF/spring/applicationContext.xml"});
+
+ TextUI ui = ctx.getBean("textUI", TextUI.class);
+
+ ui.start();
+ }
+
+}
diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerImpl.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerImpl.java
new file mode 100644
index 0000000..46ca02e
--- /dev/null
+++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TaskManagerImpl.java
@@ -0,0 +1,20 @@
+package com.example.spring.task;
+
+import com.example.spring.task.dao.TaskDAO;
+
+public class TaskManagerImpl implements TaskManager {
+
+ private TaskDAO taskDAO;
+
+ public void setTaskDAO(TaskDAO taskDAO) {
+ this.taskDAO = taskDAO;
+ }
+
+ @Override
+ public void create(Task task) {
+ // Actual business logic related to creating a task
+ // ..
+ Task newTask = taskDAO.create(task);
+ // ...
+ }
+}
diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TextUI.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TextUI.java
new file mode 100644
index 0000000..7b4676f
--- /dev/null
+++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/TextUI.java
@@ -0,0 +1,18 @@
+package com.example.spring.task;
+
+public class TextUI {
+
+ private TaskManager taskManager;
+
+ public void setTaskManager(TaskManager taskManager) {
+ this.taskManager = taskManager;
+ }
+
+ public void start() {
+ System.out.println("Starting TextUI...");
+ //..
+ Task t = new Task();
+ taskManager.create(t);
+ //..
+ }
+}
diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/TaskDAO.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/TaskDAO.java
new file mode 100644
index 0000000..3f5ad2b
--- /dev/null
+++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/TaskDAO.java
@@ -0,0 +1,10 @@
+package com.example.spring.task.dao;
+
+import com.example.spring.task.Task;
+
+/**
+ * Provide an object view of a data store
+ */
+public interface TaskDAO {
+ public Task create(Task task);
+}
diff --git a/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/jdbc/JDBCTaskDAO.java b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/jdbc/JDBCTaskDAO.java
new file mode 100644
index 0000000..37ced85
--- /dev/null
+++ b/spring-framework/spring-task-manager-structure/src/main/java/com/example/spring/task/dao/jdbc/JDBCTaskDAO.java
@@ -0,0 +1,35 @@
+package com.example.spring.task.dao.jdbc;
+
+import java.sql.Connection;
+
+import javax.sql.DataSource;
+
+import com.example.spring.task.Task;
+import com.example.spring.task.dao.TaskDAO;
+
+/**
+ * Use JDBC API to interact with a DB
+ */
+public class JDBCTaskDAO implements TaskDAO {
+
+ private DataSource dataSource;
+
+ public void setDataSource(DataSource dataSource) {
+ this.dataSource = dataSource;
+ }
+
+ @Override
+ public Task create(Task task) {
+ // Use a DB connection
+ // Connection conn = dataSource.getConnection();
+
+ // Perform an insert
+ // Return a Task object with ID set
+
+ System.out.println("JDBCTaskDAO: inserting a record to DB.");
+ //task.setId(dbTaskId);
+
+ return task;
+ }
+
+}
diff --git a/spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/applicationContext.xml b/spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/applicationContext.xml
new file mode 100644
index 0000000..abea0c7
--- /dev/null
+++ b/spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/applicationContext.xml
@@ -0,0 +1,34 @@
+<?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:jdbc="http://www.springframework.org/schema/jdbc"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/jdbc
+ http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
+ http://www.springframework.org/schema/context
+ http://www.springframework.org/schema/context/spring-context.xsd">
+
+ <context:property-placeholder location="classpath:META-INF/spring/jdbc.properties"/>
+
+ <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close" >
+ <property name="driverClassName" value="${jdbc.driverClassName}"/>
+ <property name="url" value="${jdbc.url}"/>
+ <property name="username" value="${jdbc.username}"/>
+ <property name="password" value="${jdbc.password}"/>
+ </bean>
+
+ <bean id="taskDAO" class="com.example.spring.task.dao.jdbc.JDBCTaskDAO">
+ <property name="dataSource" ref="dataSource"/>
+ </bean>
+
+ <bean id="taskManager" class="com.example.spring.task.TaskManagerImpl">
+ <property name="taskDAO" ref="taskDAO"/>
+ </bean>
+
+ <bean id="textUI" class="com.example.spring.task.TextUI">
+ <property name="taskManager" ref="taskManager"/>
+ </bean>
+
+</beans> \ No newline at end of file
diff --git a/spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/jdbc.properties b/spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/jdbc.properties
new file mode 100644
index 0000000..c549772
--- /dev/null
+++ b/spring-framework/spring-task-manager-structure/src/main/resources/META-INF/spring/jdbc.properties
@@ -0,0 +1,9 @@
+jdbc.driverClassName=org.mariadb.jdbc.Driver
+#jdbc.url=jdbc:mysql://localhost/bankdb?useSSL=false
+#jdbc.url=jdbc:mysql://localhost/bankdb?useLegacyDatetimeCode=false&serverTimezone=UTC
+jdbc.url=jdbc:mariadb://localhost/bank?serverTimezone=Asia/Colombo
+jdbc.username=bankuser
+jdbc.password=bankpwd
+
+#jdbc.driverClassName=org.postgresql.Driver
+#jdbc.url=jdbc:postgresql://localhost/bank