FactoryBean
interface is implemented by the objects used within a BeanFactory.
Step 1:
Define a factory
class by implementing FactoryBean interface.
@Component public class EmployeeFactory implements FactoryBean<Employee> { @Override public Employee getObject() throws Exception { Employee emp = new Employee(); emp.setId(1); emp.setFirstName("Krishna"); emp.setLastName("Majety"); return emp; } @Override public Class<?> getObjectType() { return Employee.class; } }
Step 2:
Inject Employee
instance and use.
@Autowired
private
Employee emp;
Find the
below working application.
Employee.java
package com.sample.app.model; public class Employee { private int id; private String firstName; private String lastName; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public void print() { StringBuilder builder = new StringBuilder(); builder.append("Employee [id=").append(id).append(", firstName=").append(firstName).append(", lastName=") .append(lastName).append("]"); System.out.println(builder.toString()); } }
EmployeeFactory.java
package com.sample.app.factory; import org.springframework.beans.factory.FactoryBean; import org.springframework.stereotype.Component; import com.sample.app.model.Employee; @Component public class EmployeeFactory implements FactoryBean<Employee> { @Override public Employee getObject() throws Exception { Employee emp = new Employee(); emp.setId(1); emp.setFirstName("Krishna"); emp.setLastName("Majety"); return emp; } @Override public Class<?> getObjectType() { return Employee.class; } }
App.java
package com.sample.app; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import com.sample.app.model.Employee; @SpringBootApplication public class App { @Autowired private Employee emp; public static void main(String args[]) { SpringApplication.run(App.class, args); } @Bean public CommandLineRunner demo() { return (args) -> { emp.print(); }; } }
application.properties
logging.level.root=WARN
pom.xml
<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>springcore</groupId> <artifactId>springcore</artifactId> <version>1</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies> </project>
Total
project structure looks like below.
Run App.java,
you can see below messages in console.
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.6.RELEASE) Employee [id=1, firstName=Krishna, lastName=Majety]
You can
download complete working application from this link.
No comments:
Post a Comment