Spring实例化bean的三种方法

简介: 1.用构造器来实例化   [html] view plain copy    print?      2.使用静态工厂方法实例化   要写一个bean,bean中定义一个静态方法,生成bean,配置factory-method指定静态方法,运行时容器就会自动...

1.用构造器来实例化

 

[html]  view plain  copy
 
 print?
  1. <bean id="hello2" class="com.hsit.hello.impl.ENhello" />  

 

2.使用静态工厂方法实例化

 

要写一个bean,bean中定义一个静态方法,生成bean,配置factory-method指定静态方法,运行时容器就会自动调用静态方法生成实例

 

bean

 

[java]  view plain  copy
 
 print?
  1. package com.hsit.hello.impl;  
  2.   
  3. import com.hsit.hello.IHello;  
  4.   
  5. public class CHhello implements IHello {  
  6.   
  7.     private String msg;  
  8.   
  9.     public void sayHello() {  
  10.         System.out.println("中文" + msg);  
  11.     }  
  12.   
  13.     public String getMsg() {  
  14.         return msg;  
  15.     }  
  16.   
  17.     public void setMsg(String msg) {  
  18.         this.msg = msg;  
  19.     }  
  20.       
  21.     @Override  
  22.     public String toString() {  
  23.         // TODO Auto-generated method stub  
  24.         return "Chinese";  
  25.     }  
  26.   
  27.     public static CHhello createInstance() {  
  28.         System.out.println("jingtai");  
  29.         return new CHhello();  
  30.     }  
  31. }  



 

 

配置文件

 

 

[html]  view plain  copy
 
 print?
  1. <bean id="hello1" class="com.hsit.hello.impl.CHhello" factory-method="createInstance" lazy-init="true">  
  2.     <!-- setter注入 -->  
  3.         <property name="msg" value="哈哈">  
  4.         </property>  
  5.     </bean>  



 

3.使用实例工厂方法实例化

 

 

要写两个bean,一个是要实例化的bean,另一个是工厂bean。容器先实例化工厂bean,然后调用工厂bean配置项factory-method中指定的静态方法,在方法中实例化bean

 

[java]  view plain  copy
 
 print?
  1. package com.hsit.hello.impl;  
  2.   
  3. public class ENhelloFactory {  
  4.       
  5.     public ENhello createInstance() {  
  6.         System.out.println("ENhello工厂");  
  7.         return new ENhello();  
  8.     }  
  9.       
  10.     public ENhelloFactory() {  
  11.         System.out.println("chuanjian");  
  12.     }  
  13.   
  14. }  


 

[java]  view plain  copy
 
 print?
  1. package com.hsit.hello.impl;  
  2.   
  3. import com.hsit.hello.IHello;  
  4.   
  5. public class ENhello implements IHello {  
  6.   
  7.     @Override  
  8.     public void sayHello() {  
  9.         // TODO Auto-generated method stub  
  10.         System.out.println("hello");  
  11.     }  
  12.       
  13.     @Override  
  14.     public String toString() {  
  15.         // TODO Auto-generated method stub  
  16.         return "我是ENhello";  
  17.     }  
  18. }  


配置文件

[html]  view plain  copy
 
 print?
  1. <bean id="eHelloFactory" class="com.hsit.hello.impl.ENhelloFactory" />  
  2. <!-- factory-bean填上工厂bean的id,指定工厂bean的工厂方法生成实例,class属性不填 -->  
  3. <bean id="example" factory-bean="eHelloFactory"   factory-method="createInstance"/>  

 

测试代码

[java]  view plain  copy
 
 print?
  1. BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");  
  2.           
  3.         ENhello eNhello = (ENhello) factory.getBean("example");  
  4.         System.out.println(eNhello.toString());  
  5.           
  6.          factory.getBean("hello1");  

 

http://blog.csdn.net/q3498233/article/details/6695580

 

相关文章
|
13天前
|
XML Java 数据格式
Spring从入门到入土(bean的一些子标签及注解的使用)
本文详细介绍了Spring框架中Bean的创建和使用,包括使用XML配置文件中的标签和注解来创建和管理Bean,以及如何通过构造器、Setter方法和属性注入来配置Bean。
53 9
Spring从入门到入土(bean的一些子标签及注解的使用)
|
4天前
|
Java 测试技术 Windows
咦!Spring容器里为什么没有我需要的Bean?
【10月更文挑战第11天】项目经理给小菜分配了一个紧急需求,小菜迅速搭建了一个SpringBoot项目并完成了开发。然而,启动测试时发现接口404,原因是控制器包不在默认扫描路径下。通过配置`@ComponentScan`的`basePackages`字段,解决了问题。总结:`@SpringBootApplication`默认只扫描当前包下的组件,需要扫描其他包时需配置`@ComponentScan`。
|
1月前
|
XML Java 数据格式
spring复习02,xml配置管理bean
详细讲解了Spring框架中基于XML配置文件管理bean的各种方式,包括获取bean、依赖注入、特殊值处理、属性赋值、集合类型处理、p命名空间、bean作用域及生命周期和自动装配。
spring复习02,xml配置管理bean
|
13天前
|
Java 开发者 Spring
Spring bean的生命周期详解!
本文详细解析Spring Bean的生命周期及其核心概念,并深入源码分析。Spring Bean是Spring框架的核心,由容器管理其生命周期。从实例化到销毁,共经历十个阶段,包括属性赋值、接口回调、初始化及销毁等。通过剖析`BeanFactory`、`ApplicationContext`等关键接口与类,帮助你深入了解Spring Bean的管理机制。希望本文能助你更好地掌握Spring Bean生命周期。
43 1
|
15天前
|
Java Spring
获取spring工厂中bean对象的两种方式
获取spring工厂中bean对象的两种方式
16 1
|
17天前
|
Java 开发者 Spring
Spring bean的生命周期详解!
本文详细介绍了Spring框架中的核心概念——Spring Bean的生命周期,包括实例化、属性赋值、接口回调、初始化、使用及销毁等10个阶段,并深入剖析了相关源码,如`BeanFactory`、`DefaultListableBeanFactory`和`BeanPostProcessor`等关键类与接口。通过理解这些核心组件,读者可以更好地掌握Spring Bean的管理和控制机制。
50 1
|
1月前
|
XML Java 数据格式
spring复习03,注解配置管理bean
Spring框架中使用注解配置管理bean的方法,包括常用注解的标识组件、扫描组件、基于注解的自动装配以及使用注解后的注意事项,并提供了一个基于注解自动装配的完整示例。
spring复习03,注解配置管理bean
|
4月前
|
Java 开发者 Spring
解析Spring中Bean的生命周期
解析Spring中Bean的生命周期
52 2
|
4月前
|
XML druid Java
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
50 0
|
3月前
|
Java Spring 容器
Spring Boot 启动源码解析结合Spring Bean生命周期分析
Spring Boot 启动源码解析结合Spring Bean生命周期分析
95 11