使用spring提供的FactoryBean(工厂bean)
a.默认获取到的是,工厂bean调用getObject创建的对象。
b.要获取工厂bean本身,我们需要给id前面加一个&。
1、pom.xml
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.6.RELEASE</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.2</version> </dependency> </dependencies>
2、实体类
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class Person { private String name; private int age; }
3、FactoryBean接口实现类
import com.it.huaxin.vo.Person; import org.springframework.beans.factory.FactoryBean; public class UserFactoryBean implements FactoryBean { @Override public Object getObject() throws Exception { Person person = new Person(); person.setAge(31); person.setName("赵六"); return person; } @Override public Class<?> getObjectType() { return Person.class; } @Override public boolean isSingleton() { return true; } }
4、配置类
import com.it.huaxin.factorybean.UserFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class FactoryBeanConfig { @Bean public UserFactoryBean userFactoryBean () { return new UserFactoryBean(); } } 5、测试类
import com.it.huaxin.config.FactoryBeanConfig; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class FactoryBeanTest { public static void main(String [] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(FactoryBeanConfig.class); Object userFactoryBean = context.getBean("userFactoryBean"); System.out.println(userFactoryBean); Object bean = context.getBean("&userFactoryBean"); System.out.println(bean); System.out.println("Spring IOC容器创建完成........"); } }