在Spring里面,当一个singleton bean依赖一个prototype bean,因为singleton bean是单例的,因此prototype bean在singleton bean里面也会变成单例. 这个怎么解决呢???可以使用Spring提供的lookup-method来注入. 举例说明:先列出相关类:代码中的说明足够说明问题.user类:prototype bean package com.cn.pojo; import java.io.Serializable; publi…
1.Bean的生命周期 scope:singleton/prototype 1)spring容器管理singleton作用的生命周期,spring能够精确知道Bean合适创建,何时初始化完成,以及何时被销毁 2)spring容器管理prototype作用的生命周期,spring只负责创建,容器实例化之后就交给客户端进行管理,spring容器不会再 跟踪其生命周期. 可以借鉴servlet的生命周期“实例化--初始化--接受请求--销毁” Spring IOC容器可以管理Bean的生命周期,Spr…
在spring的bean配置文件中我们常可以见到下面的例子: <bean id="user" class="com.sys.User" p:name-ref="name" /> 其中,p:name-ref="name"使用了p标签来配置bean的name的引用. 在使用p标签配置bean的属性时,我们先要声明p标签的命名空间xmlns:p="http://www.springframework.org/s…
实验1:配置通过静态工厂方法创建的bean  [通过静态方法提供实例对象,工厂类本身不需要实例化!] 1.创建静态工厂类 public class StaticFactory { private static HashMap<String, Book> map = null; static{ map = new HashMap<>(); map.put("book01", new Book("java", "you", 3…
1.Spring容器 在 Spring IOC 容器读取 Bean 配置创建 Bean 实例之前, 必须对它进行实例化. 只有在容器实例化后, 才可以从 IOC 容器里获取 Bean 实例并使用.Spring 提供了两种类型的 IOC 容器实现. BeanFactory: IOC 容器的基本实现.   ①ApplicationContext: 提供了更多的高级特性. 是 BeanFactory 的子接口.   ②BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身:…
Spring通过注解配置bean 基于注解配置bean 基于注解来配置bean的属性在classpath中扫描组件 组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定的组件包括: -@Component:基本注解,标识了一个受Spring管理的组件 -@Responsitory:标识持久层组件 -@Service:标识服务层(业务层)组件 -@Controller:标识表现层组件 对于扫描到的组件,Spring…
Spring通过注解配置bean 基于注解配置bean 基于注解来配置bean的属性 在classpath中扫描组件 组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定的组件包括: -@Component:基本注解,标识了一个受Spring管理的组件 -@Responsitory:标识持久层组件 -@Service:标识服务层(业务层)组件 -@Controller:标识表现层组件 对于扫描到的组件,Sprin…
在 Spring 容器内拼凑 bean 叫做装配.装配 bean 的时候,你是在告诉容器,需要哪些 bean ,以及容器如何使用依赖注入将它们配合在一起. 理论上,bean 装配的信息可以从任何资源获得,包括属性文件,关系数据库等,但 XML 文件是最常见的 Spring 应用系统配置源, Spring 中的几种容器都支持使用 XML 装配 bean,包括: --XMLBeanFactory --ClassPathXMLApplicationContext --FileSystemXMLAppl…
1.通过静态工厂方法配置Bean 要声明通过静态方法创建的 Bean, 需要在 Bean 的 class 属性里指定拥有该工厂的方法的类, 同时在 factory-method 属性里指定工厂方法的名称. 最后, 使用 <constrctor-arg> 元素为该方法传递方法参数. //创建工厂 public class CarFactory { public static Map<String, Car> cars = new HashMap<String, Car>(…
概要: 通过调用静态工厂方法创建Bean 调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中.当client须要对象时,仅仅须要简单地调用静态方法,而不用关心创建对象地细节. 要声明通过静态方法创建的Bean,须要在Bean地class属性里指定拥有该工厂的方法的类,同一时候在factory-method属性里指定工厂方法的名称.最后,使用<constructor-arg>元素为该方法传递方法參数 通过调用实例工厂方法创建Bean 实例工厂方法:将对象的创建过程封装到另外一个对象实…