`
znlian
  • 浏览: 2325 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

spring的注入及bean的作用域

阅读更多
java项目中:
1.建User类
public class User {
   private   String name;
   private String password;
public String getName() {
return name;
}
public void setName(String name) {
System.out.println("setusername-----"+name);
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
  
}



2.建二个接口,和实现类
public class TestSpringImpl implements TestSpring{
   
private User user;

public void setUser(User user){
this.user = user;
    this.user.setName("TestSpringImpl---testUser");
}

public void  save(String name){
  // System.out.println("TestSpringImpl---"+name);
System.out.println(this.user.getName());
}
}




public class SecondTestImpl implements SecondTest {
     
  private User us;
 
  public void setUs(User us){
  this.us = us;
  this.us.setName("SecondTestImpl--testUser");
  }

public void del(User user){
    //System.out.println("SecondTestImpl--User="+user.getName());
System.out.println(this.us.getName());
}
}

3.application.xml


   <bean id="testSpringImpl" class="TestSpringImpl">
   <property name="user" ref="user">
   </property>
   </bean>
  
    <bean id="secondTestImpl" class="SecondTestImpl">
    <property name="us" ref="user"></property>
    </bean>
   
    <bean name="user" class="User" scope="prototype"/>
    
   <bean id="test" class="Test">
   <!--  //setter 注入
     <property name="ts" ref="testSpringImpl"></property>-->
     <constructor-arg ref="testSpringImpl"></constructor-arg>
       <constructor-arg   value="i LOEVE YOUE"></constructor-arg>
     <constructor-arg ref="secondTestImpl"></constructor-arg>
   </bean>


当user类的,scope 为singleton
TestSpringImpl 修改了user的 name 为TestSpringImpl---testUser
SecondTestImpl 也修改了user的 name 为SecondTestImpl--testUser
save 和 del 输出的 user的 name 都是 SecondTestImpl--testUser
当user类的,scope 为prototype 时.
输出的分别是TestSpringImpl---testUser,SecondTestImpl--testUser
springAPI:
当把一个bean定义设置为singlton作用域时,Spring IoC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都将返回被缓存的对象实例。默认

Prototype作用域的bean会导致在每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例。根据经验,对所有有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域。

对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个prototype bean的整个生命周期负责:容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法,而对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用。清除prototype作用域的对象并释放任何prototype bean所持有的昂贵资源,都是客户端代码的职责。(让Spring容器释放被singleton作用域bean占用资源的一种可行方式是,通过使用bean的后置处理器,该处理器持有要被清除的bean的引用。)



分享到:
评论

相关推荐

    spring(一)–概念和历史/hellospring/IOC创建对象的方式/Spring配置/set注入/c命名和p命名空间注入/bean的作用域

    文章目录一、概念和历史二、hellospring三、IOC创建对象的方式四、Spring配置五、set注入–属性注入六、c命名和p命名空间注入七 、bean的作用域 一、概念和历史 Spring的形成,最初来自Rod Jahnson所著的一本很有...

    Spring从入门到入土——Bean的作用域

    Bean的作用域Bean的作用...Spring从入门到入土——Bean的作用域 Bean的作用域 ​ 在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的

    尚硅谷佟刚Spring4代码及PPT.rar

    代码及ppt涵盖 Spring4.0 的所有核心内容:在 Eclipse 中安装 SpringIDE 插件、IOC & DI、在 Spring 中配置 Bean、自动装配、Bean 之间的关系(依赖、继承)、Bean 的作用域、使用外部属性文件、SpEL、管理 Bean 的...

    java面试Spring.pdf

    1. Spring 介绍 1.1 Spring 的优点 ...说一下Spring基于xml注入bean的几种方式? Spring如何解决循环依赖问题? Spring的自动装配 Spring框架中都用到了哪些设计模式? Spring框架中有哪些不同类型的事件?

    spring4示例代码

    以及bean的autowire和继承与依赖,以及bean的作用域。 spring-2 演示了外部配置文件的引入(connection),spel(spring el)表达式 ,静态工厂方式及实例工厂方式及factorybean方式创建bean, spring的生命周期及...

    spring2.5学习PPT 传智博客

    05_配置Spring管理的bean的作用域 06_Spring管理的Bean的生命周期 07_编码剖析Spring依赖注入的原理 08_编码剖析Spring装配基本属性的原理 09_Spring如何装配各种集合类型的属性 10_使用构造器装配属性 11_用...

    25个经典的Spring面试问答

    Spring Bean的作用域之间有什么区别 什么是Spring inner beans Spring框架中的单例Beans是线程安全的么 请举例说明如何在Spring中注入一个Java Collection 如何向Spring Bean中注入一个JavautilProperties 请解释...

    spring2.5教程(传智)

    01_全面阐释Spring及其各项功能 ...05_配置Spring管理的bean的作用域 06_Spring管理的Bean的生命周期 07_编码剖析Spring依赖注入的原理 08_编码剖析Spring装配基本属性的原理 09_Spring如何装配各种集合类

    Spring面试题含答案.pdf

    25. 解释 Spring 支持的几种 bean 的作用域 26. Spring 框架中的单例 bean 是线程安全的吗? 27. 解释 Spring 框架中 bean 的生命周期 28. 哪些是重要的 bean 生命周期方法? 你能重载它们吗? 29. 什么是 Spring ...

    Spring面试专题.pdf

    11、Spring Bean 的作用域之间有什么区别? 12、什么是 Spring inner beans? 13、Spring 框架中的单例 Beans 是线程安全的么? 14、请举例说明如何在 Spring 中注入一个 Java Collection? 15、如何向 Spring Bean ...

    Spring面试题.zip

    11、Spring Bean 的作用域之间有什么区别? 12、什么是 Spring inner beans? 13、Spring 框架中的单例 Beans 是线程安全的么? 14、请举例说明如何在 Spring 中注入一个 Java Collection? 15、如何向 Spring Bean ...

    SpringFramework常见知识点.md

    - bean的作用域有哪些? - Spring 的扩展点主要有哪些? - Spring如何解决循环依赖? - 事务的传播行为是什么?有哪些? - 什么是AOP? - AOP的组成元素和概念有哪些? - AOP实现方式有哪些? - AspectJ AOP 和 ...

    SSM框架面试题.pdf

    4. Spring中Bean的作用域有哪些? 5. 如何在Spring中配置Bean? 6. 解释Spring的AOP(面向切面编程)。 7. Spring支持哪些事务管理类型? 8. @Autowired是如何工作的? 9. 解释Spring MVC流程。 10. Spring框架中的...

    spring.doc

    3.4 Bean的作用域 16 Scope单例多例作用域拓展: 16 3.4.1 singleton(默认值) 16 3.4.2 prototype 17 3.4.3 Request 17 3.4.4 Session 18 3.4.5 Global session 18 3.4.6 指定Bean的初始化方法和销毁方法 18 Bean的...

    Spring框架(详细 一).md

    本篇博文适合零基础的同学:主要包括:spring介绍; Ioc 入门案例; Di 入门案例; 核心API介绍;...bean作用域; 生命周期; 属性注入--setter方法 p命名空间; sqel; 集合注入; 装配bean基于注解;

    77道Spring面试题以及参考答案(2024年最新版)

    3. Spring Bean部分围绕Bean的生命周期、作用域、自动装配等进行了详细阐述。 4. 注解部分列举了常用的Spring注解及其作用,如@Component、@Autowired等。 5. 数据访问部分涉及了Spring对JDBC、Hibernate等数据访问...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.4. 中间层 2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. JPA 2.4.3. 异步...

    spring学习笔记(有代码有注解解释)

    scope 作用域;Spring 的继承;Spring 的依赖;Spring 的 p 命名空间;Spring 的工厂方法;IoC 自动装载(Autowire);AOP以及如何使用; 适用人群:比较适合与我一样的在校普通大学生进行学习整理,以及适合初学...

    Spring相关测试1全部

    Spring中注入属性值细节、自动装配、bean之间的关系、bean的作用域、使用外部属性文件、SpEL、IOC容器中Bean 的生命周期、泛型依赖注入。

Global site tag (gtag.js) - Google Analytics