参考内容:http://jinnianshilongnian.iteye.com/blog/1413857
关于Ioc容器的理解:我的理解就是这个xml文件,Ioc就是控制反转的意思。
关于spring中的bean
这个bean其实就是我们创建的实例
Bean创建方式定义:说明是通过构造器还是工厂方法创建Bean;
Bean之间关系定义:即对其他bean的引用,也就是依赖关系定义,这些引用bean也可以称之为同事bean 或依赖bean,也就是依赖注入。
在一个bean文件中我们可以自己定义一个bean,也可以引用其他xml文件来引入bean
关于bean的命名,建议就使用id进行命名,也可以多加个name来使用别名,其他命名方式就不建议使用了<beans>
<import resource=”resource1.xml”/>
<bean id=”bean1”class=””></bean>
<bean id=”bean2”class=””></bean>
<bean name=”bean2”class=””></bean>
<alias alias="bean3" name="bean2"/>
<import resource=”resource2.xml”/>
</beans>
实例化bean的方法
1使用构造器就行实例化:其实就是使用构造方法实例化,可以带参数也可以不带参数
<bean name="bean1" class="cn.javass.spring.chapter2.HelloImpl2"/>
<bean name="bean2" class="cn.javass.spring.chapter2.HelloImpl2">
<!-- 指定构造器参数 -->
<constructor-arg index="0" value="Hello Spring!"/>
</bean>
实例如下
1.package cn.javass.spring.chapter2;
2. public class HelloImpl2 implements HelloApi {
3. private String message;
4. public HelloImpl2() {
5. this.message = "Hello World!";
6. }
7. Public HelloImpl2(String message) {
8. this.message = message;
9. }
10. @Override
11. public void sayHello() {
12. System.out.println(message);
13. }
14.}
1.<!--使用默认构造参数-->
2.<bean name="bean1" class="cn.javass.spring.chapter2.HelloImpl2"/>
3. <!--使用有参数构造参数-->
4.
5.<bean name="bean2" class="cn.javass.spring.chapter2.HelloImpl2">
6.<!-- 指定构造器参数 -->
7. <constructor-arg index="0" value="Hello Spring!"/>
8.</bean>
1.@Test
2.public void testInstantiatingBeanByConstructor() {
3. //使用构造器
4. BeanFactory beanFactory =
5.new ClassPathXmlApplicationContext("chapter2/instantiatingBean.xml");
6. HelloApi bean1 = beanFactory.getBean("bean1", HelloApi.class);
7. bean1.sayHello();
8. HelloApi bean2 = beanFactory.getBean("bean2", HelloApi.class);
9. bean2.sayHello();
10.}
说白了就是定义配置文件的时候要与相对应的类的构造方法保持一致
2使用静态工厂方式实例化Bean:其实就是指定一个类,使用factory-method属性制定类中的一个静态方法来创建bean,也可以使用带参数,添加参数使用<constructor-arg index="0" value="Hello Spring!"/>
实际例子如下
1.public class HelloApiStaticFactory {
2. //工厂方法
3. public static HelloApi newInstance(String message) {
4. //返回需要的Bean实例
5. return new HelloImpl2(message);
6.}
7.}
1.<!-- 使用静态工厂方法 -->
2.<bean id="bean3" class="cn.javass.spring.chapter2.HelloApiStaticFactory" factory-method="newInstance">
3. <constructor-arg index="0" value="Hello Spring!"/>
4.</bean>
1.@Test
2.public void testInstantiatingBeanByStaticFactory() {
3. //使用静态工厂方法
4. BeanFactory beanFactory =
5.new ClassPathXmlApplicationContext("chaper2/instantiatingBean.xml");
6. HelloApi bean3 = beanFactory.getBean("bean3", HelloApi.class);
7. bean3.sayHello();
8.}
3使用实例工厂方法实例化Bean:其实就是先用构造器方法实例化一个bean然后再使用factory-bean引用创建好的bean,再通过factory-method指定一个方法去实例化bean,该方法会返回一个bean对象
实例如下
2.package cn.javass.spring.chapter2;
3.public class HelloApiInstanceFactory {
4.public HelloApi newInstance(String message) {
5. return new HelloImpl2(message);
6. }
7.}
8.
1.<!—1、定义实例工厂Bean -->
2.<bean id="beanInstanceFactory"
3.class="cn.javass.spring.chapter2.HelloApiInstanceFactory"/>
4.<!—2、使用实例工厂Bean创建Bean -->
5.<bean id="bean4"
6.factory-bean="beanInstanceFactory"
7. factory-method="newInstance">
8. <constructor-arg index="0" value="Hello Spring!"></constructor-arg>
9.</bean>
1.@Test
2.public void testInstantiatingBeanByInstanceFactory() {
3.//使用实例工厂方法
4. BeanFactory beanFactory =
5.new ClassPathXmlApplicationContext("chapter2/instantiatingBean.xml");
6. HelloApi bean4 = beanFactory.getBean("bean4", HelloApi.class);
7. bean4.sayHello();
8.}
现在我们已经可以简单的使用spring最基本的东西,也就是使用Ioc容器进行实例化bean,也就是帮助我们创建实例对象,并且可以通过 beanFactory.getBean()得到bean对象进行使用。目前我们会定义一些简单的bean对象,下一节开始我们会介绍bean与bean之间的关系,也就是依赖注入
分享到:
相关推荐
Spring 中控制 2 个 bean 的初始化顺序 在 Spring 框架中,控制多个 bean 的初始化顺序是一个常见的问题。本篇文章将详细介绍如何控制 2 个 bean 的初始化顺序,提供了多种实现方式,并分析了每种方式的优缺。 ...
在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...
在Spring1-1这个文件中,可能包含了关于这些概念的示例代码和详细教程,帮助开发者深入理解和掌握Spring中的Bean管理。学习和熟练运用这些知识,将对提升Java EE应用的开发效率和质量大有裨益。
Spring会创建Bean的实例,`createBeanInstance(beanName, mbd, args)`执行Bean实例的创建,而`populateBean(beanName, mbd, instanceWrapper)`则负责填充Bean的属性,将依赖注入到Bean中。 9. **Bean初始化**: ...
在Spring框架中,动态注册Bean是一项非常实用的功能,它允许我们在应用运行时向Spring容器添加新的Bean定义。这种能力在很多场景下都是极其有用的,比如根据不同的环境配置加载不同的服务实现,或者在运行时根据某些...
- **属性注入**:Spring会将依赖注入到Bean中,包括值注入(value,ref)和集合注入(list,map,props,set)。 - **初始化回调**:Spring支持两种类型的初始化回调方法,即`@PostConstruct`注解的方法和在XML中...
Spring中Bean的生命周期和作用域及实现方式 Spring是一个非常流行的Java应用程序框架,它提供了一个灵活的机制来管理Bean的生命周期和作用域。Bean的生命周期和作用域是Spring框架中两个非常重要的概念,它们决定了...
当需要在线程中获取Spring注解的bean时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...
在Spring框架中,管理Bean的方式主要有三种:XML配置、注解配置和Java配置。下面将详细介绍这三种方式以及Spring的自动注入机制。 1. **基于XML的Bean定义**: 在XML配置中,我们通常在`applicationContext.xml`...
spring 获取bean spring 获取bean spring 获取bean spring 获取bean spring 获取bean spring 获取bean spring 获取bean spring 获取bean
在本文中,我们将深入探讨Spring中的Bean配置,包括IoC和DI的概念,Bean的配置方式,以及不同类型的IOC容器。 **Spring的Bean配置**: 在Spring中,Bean是应用中的对象,它们由Spring IoC容器负责创建、管理和装配...
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class...测试示例中是spring boot 的部分代码,动态加载的内容为接口实现类,且初始化时加载本地的实现类,动态加载后改为非程序加载目录中的jar实现类。
java *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取...
在Spring框架中,Bean的生命周期管理和作用域是其核心特性之一,它们对于理解Spring如何管理对象的创建、初始化、使用以及销毁至关重要。首先,我们来深入探讨Bean的生命周期。 Spring中的Bean生命周期主要分为两个...
在Spring框架中,Bean是核心概念,它是Spring管理的对象,通常代表了应用程序中的业务对象或服务。本示例将深入探讨如何在Spring中创建和管理Bean。首先,我们需要理解Spring的IoC(Inversion of Control,控制反转...
这里我们将详细探讨如何在Java中通过Spring获取配置的bean。 1. **BeanFactory与ApplicationContext** - **BeanFactory** 是Spring中最基础的IoC容器,负责管理和实例化Bean。它允许开发者定义Bean的生命周期和...
spring动态向容器中添加bean和删除指定bean,不需要重启应用
在Spring框架中,Bean的管理是其核心特性之一,它涉及到Bean的创建、初始化、装配以及销毁等整个生命周期过程。本课件主要涵盖了以下几个关键知识点: 1. **控制反转(IoC)和依赖注入(DI)**:Spring的核心设计...
在Spring框架中,Bean的加载顺序是一个重要的概念,它涉及到Spring容器如何管理和初始化Bean的过程。在"spring的bean加载顺序样例项目"中,我们可以通过分析和实验来深入理解这一主题。下面将详细阐述Spring Bean的...
在Spring框架中,Bean的生命周期管理和ApplicationContext的应用是两个核心概念,它们对于理解Spring如何管理和协调应用中的对象至关重要。本文将深入探讨这两个主题,并结合国际化(i18n)和事件传递来阐述它们在...