A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蓝色土耳其 初级黑马   /  2019-7-7 10:15  /  828 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Bean实例化三种方式

1) 使用无参构造方法实例化

      它会根据默认无参构造方法来创建类对象,如果bean中没有默认无参构造函数,将会创建失败

    <bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>

2) 工厂静态方法实例化

      工厂的静态方法返回Bean实例

    public class StaticFactoryBean {
        public static UserDao createUserDao(){   
        return new UserDaoImpl();
        }
    }

    <bean id="userDao" class="com.itheima.factory.StaticFactoryBean"
          factory-method="createUserDao" />

3) 工厂实例方法实例化

      工厂的非静态方法返回Bean实例

    public class DynamicFactoryBean {  
  spring相关API4.1 ApplicationContext的继承体系
applicationContext:接口类型,代表应用上下文,可以通过其实例获得 Spring 容器中的 Bean 对象
4.2 ApplicationContext的实现类
1)ClassPathXmlApplicationContext
​      它是从类的根路径下加载配置文件 推荐使用这种
2)FileSystemXmlApplicationContext
​      它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。
3)AnnotationConfigApplicationContext
​      当使用注解配置容器对象时,需要使用此类来创建 spring 容器。它用来读取注解。
4.3 getBean()方法使用
public Object getBean(String name) throws BeansException {  
    assertBeanFactoryActive();   
    return getBeanFactory().getBean(name);
}
public <T> T getBean(Class<T> requiredType) throws BeansException {                     assertBeanFactoryActive();
    return getBeanFactory().getBean(requiredType);
}
其中,当参数的数据类型是字符串时,表示根据Bean的id从容器中获得Bean实例,返回是Object,需要强转。
当参数的数据类型是Class类型时,表示根据类型从容器中匹配Bean实例,当容器中相同类型的Bean有多个时,则此方法会报错
getBean()方法使用

ApplicationContext applicationContext = new
            ClassPathXmlApplicationContext("applicationContext.xml");
  UserService userService1 = (UserService) applicationContext.getBean("userService");
  UserService userService2 = applicationContext.getBean(UserService.class);


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马