summaryrefslogtreecommitdiff
path: root/spring-framework/04-basic-no-xml-java-configuration
diff options
context:
space:
mode:
authorKamal Wickramanayake <kamal@inbox.lk>2026-04-25 21:53:33 +0530
committerKamal Wickramanayake <kamal@inbox.lk>2026-04-25 21:53:33 +0530
commit4afcff940551079617e8f4116e52bb0ef9df7fcc (patch)
treecbaed6a2a53c7d032bfafaa38b94e4fc607f3e76 /spring-framework/04-basic-no-xml-java-configuration
parent7b08f1155e1cb8bf263c3570eeb119970407a037 (diff)
Added Spring Framework sample code
Diffstat (limited to 'spring-framework/04-basic-no-xml-java-configuration')
-rw-r--r--spring-framework/04-basic-no-xml-java-configuration/.gitignore9
-rw-r--r--spring-framework/04-basic-no-xml-java-configuration/README12
-rw-r--r--spring-framework/04-basic-no-xml-java-configuration/pom.xml16
-rw-r--r--spring-framework/04-basic-no-xml-java-configuration/src/main/java/com/example/spring/App.java50
-rw-r--r--spring-framework/04-basic-no-xml-java-configuration/src/main/java/com/example/spring/Maths.java19
-rw-r--r--spring-framework/04-basic-no-xml-java-configuration/src/main/java/com/example/spring/MathsUser.java16
6 files changed, 122 insertions, 0 deletions
diff --git a/spring-framework/04-basic-no-xml-java-configuration/.gitignore b/spring-framework/04-basic-no-xml-java-configuration/.gitignore
new file mode 100644
index 0000000..ec4e05e
--- /dev/null
+++ b/spring-framework/04-basic-no-xml-java-configuration/.gitignore
@@ -0,0 +1,9 @@
+# Eclipse
+bin
+.settings
+.metadata
+.classpath
+.project
+
+# Maven
+target
diff --git a/spring-framework/04-basic-no-xml-java-configuration/README b/spring-framework/04-basic-no-xml-java-configuration/README
new file mode 100644
index 0000000..5e8720d
--- /dev/null
+++ b/spring-framework/04-basic-no-xml-java-configuration/README
@@ -0,0 +1,12 @@
+This project illustrates how a Java class can be made to describe the Spring configuration
+where the objects returned by methods in the class are made to be the Spring beans.
+
+The class is annotated with @Configuration which indicates that the primary purpose of the
+class is to act as a source of bean definitions.
+
+@Bean is used with a method to indicate that the method instantiates, configures, and
+initializes a new object to be managed by the Spring IoC container. It plays the same role
+as the <bean/> element.
+
+It is not necessary for the classes from which beans are instantiated to have annotations
+like @Component or @Autowired since the @Bean annotated methods perform the configuration.
diff --git a/spring-framework/04-basic-no-xml-java-configuration/pom.xml b/spring-framework/04-basic-no-xml-java-configuration/pom.xml
new file mode 100644
index 0000000..b76e1f0
--- /dev/null
+++ b/spring-framework/04-basic-no-xml-java-configuration/pom.xml
@@ -0,0 +1,16 @@
+<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>basic-no-xml-java-configuration</artifactId>
+ <packaging>jar</packaging>
+
+</project>
diff --git a/spring-framework/04-basic-no-xml-java-configuration/src/main/java/com/example/spring/App.java b/spring-framework/04-basic-no-xml-java-configuration/src/main/java/com/example/spring/App.java
new file mode 100644
index 0000000..1e613c6
--- /dev/null
+++ b/spring-framework/04-basic-no-xml-java-configuration/src/main/java/com/example/spring/App.java
@@ -0,0 +1,50 @@
+package com.example.spring;
+
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class App {
+
+ public static void main(String[] args) {
+ @SuppressWarnings("resource")
+ ApplicationContext ctx = new AnnotationConfigApplicationContext(App.class);
+
+ MathsUser mathsUser = ctx.getBean(MathsUser.class);
+
+ mathsUser.doTask();
+ }
+
+ @Bean
+ public Maths maths() {
+ Maths maths = new Maths();
+ maths.setB(100);
+
+ return maths;
+ }
+
+ @Bean
+ public MathsUser mathsUser() {
+ MathsUser mathsUser = new MathsUser();
+
+ /*
+ * What would the maths() return? Would it be the Spring managed bean or what
+ * would be returned when the maths() method is directly invoked?
+ *
+ * @Bean can be used with classes annotated with @Component tool.
+ *
+ * In a class annotated with @Configuration, maths() return the Spring managed bean.
+ *
+ * In a class annotated with @Component, what is returned by maths() is not the
+ * Spring managed bean, but what would be returned when the maths() method is directly invoked.
+ *
+ * For more details, look at the 'Full @Configuration vs “lite” @Bean mode?' description
+ * found in the 'Core Technologies' section of the Spring Framework Reference documentation.
+ */
+ mathsUser.setMaths(maths());
+
+ return mathsUser;
+ }
+} \ No newline at end of file
diff --git a/spring-framework/04-basic-no-xml-java-configuration/src/main/java/com/example/spring/Maths.java b/spring-framework/04-basic-no-xml-java-configuration/src/main/java/com/example/spring/Maths.java
new file mode 100644
index 0000000..b42d32d
--- /dev/null
+++ b/spring-framework/04-basic-no-xml-java-configuration/src/main/java/com/example/spring/Maths.java
@@ -0,0 +1,19 @@
+package com.example.spring;
+
+public class Maths {
+
+ private int b;
+
+ public int getB() {
+ return b;
+ }
+
+ public void setB(int b) {
+ this.b = b;
+ }
+
+
+ public int add(int a) {
+ return a + b;
+ }
+}
diff --git a/spring-framework/04-basic-no-xml-java-configuration/src/main/java/com/example/spring/MathsUser.java b/spring-framework/04-basic-no-xml-java-configuration/src/main/java/com/example/spring/MathsUser.java
new file mode 100644
index 0000000..aba1836
--- /dev/null
+++ b/spring-framework/04-basic-no-xml-java-configuration/src/main/java/com/example/spring/MathsUser.java
@@ -0,0 +1,16 @@
+package com.example.spring;
+
+public class MathsUser {
+
+ private Maths maths;
+
+ public void setMaths(Maths maths) {
+ this.maths = maths;
+ }
+
+ public void doTask() {
+ int result = maths.add(10);
+
+ System.out.println(result);
+ }
+}