Spring容器解析applicationContext.xml,提供bean的三种实例化用法(直接调用,静态工厂,实例工厂)
Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)
很多程序员应该不知道,除了平常的用法,还有两种:静态工厂 和 实例工厂.
方式1,普通用法
<bean id="UserService" class="module.serviceImpl.UserServiceImpl">
<property name="userDao" ref="UserDao"></property>
</bean>
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( xmlPath);
UserDao userDao = (UserDao) context.getBean("userDao");
方式2,静态工厂的配置
<bean id="userDao" class="ioc.createBean.staticFactory.UserDaoImpl_staticFactory" factory-method="getUserDaoImpl"></bean>
public class UserDaoImpl_staticFactory {
/**
* 提供bean的方法必须是static修饰的
* @methodName: getUserDaoImpl
* @description:
* @param @return
* @return UserDaoImpl
* @throws
# @eg:
*/
public static UserDaoImpl getUserDaoImpl() {
System.out.println("这个bean来自:静态工厂!");
return new UserDaoImpl();
}
}
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( xmlPath);
UserDao userDao = (UserDao) context.getBean("userDao");
方式3,bean实例工厂的配置
<bean id="instanceFactory" class="ioc.createBean.instanceFactory.UserDaoImpl_instanceFactory"></bean>
<bean id="userDao" factory-bean="instanceFactory" factory-method="getUserDao"></bean>
public class UserDaoImpl_instanceFactory {
/**
* 提供bean的方法一定是非静态的
* @methodName: getUserDao
* @description:
* @param @return
* @return UserDaoImpl
* @throws
# @eg:
*/
public UserDaoImpl getUserDao() {
System.out.println("这个bean来自:实例工厂!");
return new UserDaoImpl();
}
}
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( xmlPath);
UserDao userDao = (UserDao) context.getBean("userDao");
需要注意的是:
静态工厂用法中,提供bean的方法一定要用static修饰:public static ...
不然会报异常:
<!-- 异常,原因:方法应该变为静态的 Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao' defined in class path resource [ioc/createBean/staticFactory/bean_staticFactory.xml]: No matching factory method found: factory method 'getUserDaoImpl' -->
猜你喜欢
- /
- /源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)
- /源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)/Readme
- /源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)/instanceFactory
/源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)/instanceFactory/Test.java
/源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)/instanceFactory/UserDaoImpl_instanceFactory.java
- /源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)/instanceFactory/bean_instanceFactory.xml
- /源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)/normal
/源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)/normal/Test.java
- /源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)/normal/applicationContext_userBean.xml
- /源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)/staticFactory
/源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)/staticFactory/Test.java
/源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)/staticFactory/UserDaoImpl_staticFactory.java
- /源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)/staticFactory/bean_staticFactory.xml
- /源码-Spring容器(bean容器)通过解析applicationContext.xml,提供bean的三种用法(直接调用,静态工厂,实例工厂)
- spring 各种demo实例
- [工作必备]spring定时器简单的demo
- Java Spring定时器Demo, 可自动跳过节假日
- Spring两种常用的事务管理范例AspectJ和基于注解方式
- 证 Spring生命周期默认初始化和销毁方法通过xml配置实现
- 证 spring通过@Async注解实现异步执行Service方法并且通过Java Future对象得到执行结果
- spring入门实例demo
- spring实例入门教程
- spring整合rmi代码实例
- 原证精 spring如何注入List,Set,Map对象
- Spring Hibernate Spring Data MongoDB Akka Titles Bootstrap JQuery Maven 大全
- 证 spring实现忽略禁用@Required注解的实例