Spring中三种实例化bean的方法:
1)使用类构造器
  <bean id="orderService" class="cn.itcast.OrderService"/>
 
2)使用静态工厂方法实现实例化
  <bean id="orderService" class="cn.itacast.OrderFactory" factory-method="createOrder"/>
  public class OrderFactory{
       public static OrderServiceBean createOrder(){
             return new OrderServiceBean();
       }
  }
 3)使用实例工厂方法实例化
   <bean id="orderServiceFactory" class="cn.itcast.service.OrderFactory"/>
   <bean id="orderService" factory-bean="personServiceFactory" factory-method="createOrder"/>
   public class OrderFactory{
       public static OrderServiceBean createOrder(){
             return new OrderServiceBean();
       }
  }
  Bean的作用域:
  .singleton
    在每一个Spring Ioc容器中一个bean定义只有一个对象实例。默认情况下会在容器启动的时候初始化
    bean。但是我们可以指定Bean节点的lazy-init="true"来延迟初始化bean,这时候只有第一次使用
    bean的时候才会初始化bean。如:
    <bean id="xxx" class="类的全类名" lazy-init="true"/>
    如果想对所有bean都应用延迟初始化,可以在根节点beans设置defult-lazy-init="true",如下:
    <beans default-lazy-init="true"...>
  .prototype
     每次从容器获取的bean都是新的对象。
  .request
  .session
  .global session
 注入依赖对象
   1)基本类型对象注入
   <bean id="orderService" class="OrderServiceBean">
        <constructor-arg index="0" type="java.lang.String" value="xxx"/>  //构造器注入
        <property name="name" value="zhao"/>  //属相setter方法注入
   </bean>
   2)注入其他bean
   方法1:
        <bean id="orderDao" class="service.OrderDaoBean"/>
        <bean id="orderService" class="service.OrderServiceBean">
                  <property name="orderDao" ref="orderDao"/>
        </bean>
   方法2:使用内部bean(内部bean不能被其他bean使用)
         <bean id="orderService" class="service.OrderServiceBean">
                   <property name="orderDao">
                            <bean class="service.OrderDaoBean"/>
                   </property>
         </bean>
集合装配类型:
   public class OrderServiceBean {
              private Set<String> sets=new HashSet<String>();
              private List<String> lists=new ArrayList<String>();
              private Properties properties=new Properties();
              private Map<String,String> maps=new HashMap<String,String>();
 
              //setter和getter方法省略
              .....
   }
集合的配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
 
   <bean id="order" class="cn.itcast.service.OrderServiceBean">
          <property name="lists">
                <list>
                        <value>hujingwei</value>
                        <value>wanglei</value>
                </list>
          </property>
 
          <property name="sets">
                  <set>
                          <value>set</value>
                  </set>
          </property>
 
         <property name="maps">
                 <map>
                         <entry key="hujingwei" value="26" />
                         <entry key="wanglei" value="25" />
               </map>
          </property>
 
         <property name="properties">
              <props>
                        <prop key="12">sss</prop>
             </props>
          </property>
 
</bean>
</beans>
 
自动装配
  在java代码中,使用@Autowired或@Resource注解方式进行装配,这两个注解的区别是:
  @Autowired默认是按类型装配,@Resource默认是按名称装配,当找不到名称匹配的时候
  才按照类型装配。
  @Autowired注解是按照装配类型进行装配的,默认情况下,依赖的对象必须存在,如果
  允许为null值,可以设置它的required属性为false。如果我们想按照名称装配,可以
  结合@Qualifier注解一起使用。如下:
  @Autowired
  @Qualifier("personOrderBean")
  private PersonDao personDao;

spring一些总结的更多相关文章

  1. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  2. 玩转spring boot——快速开始

    开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...

  3. Spring基于AOP的事务管理

                                  Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...

  4. [Spring]IoC容器之进击的注解

    先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...

  5. 学习AOP之透过Spring的Ioc理解Advisor

    花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...

  6. 学习AOP之深入一点Spring Aop

    上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...

  7. 学习AOP之认识一下Spring AOP

    心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...

  8. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  9. Spring之旅(2)

    Spring简化Java的下一个理念:基于切面的声明式编程 3.应用切面 依赖注入的目的是让相互协作的组件保持松散耦合:而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件. AOP面向切面 ...

  10. Spring之旅

    Java使得以模块化构建复杂应用系统成为可能,它为Applet而来,但为组件化而留. Spring是一个开源的框架,最早由Rod Johnson创建.Spring是为了解决企业级应用开发的复杂性而创建 ...

随机推荐

  1. 进入docker容器并执行命令的的3中方法

    进入docker容器并执行命令的的3中方法 docker exec   nsenter   docker attach "container" 建议使用nsenter, exec有 ...

  2. Python小项目之五子棋

    1.项目简介 在刚刚学习完python套接字的时候做的一个五子棋小游戏,可以在局域网内双人对战,也可以和电脑对战 2.实现思路 局域网对战 对于局域网功能来说,首先建立连接(tcp),然后每次下棋时将 ...

  3. DevOps - 日志分析 -ELK

    wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-co ...

  4. Eclipse主题更换方法

    1.打开Eclipse的Help->Eclipse Marketplace 2.在Find里搜索Eclipse Color Theme,点击Install按钮 3.打开Window->Pr ...

  5. 计算时间复杂度&空间复杂度

    1.下面函数的复杂度是: long foo(long x){ if(x<2) return 1; return x*x*foo(x-1); } 解析: 当n>=2时 foo(n)=n^2* ...

  6. 设计模式之第12章-享元模式(Java实现)

    设计模式之第12章-享元模式(Java实现) “怎么回事,竟然出现了OutOfMemory的错误.鱼哥,来帮我看看啊.”“有跟踪错误原因么?是内存泄露么?”“不是内存泄露啊,具体原因不知道啊.对了,有 ...

  7. Android onConfigurationChanged用法(规避横竖屏切换导致的重新调用onCreate方法)

    onConfigurationChanged的目的是为了规避横竖屏切换干掉activity而重新调用onCreate方法的问题:有的时候,我们希望重新进入OnCreate生命周期,此时可以调用onSa ...

  8. [oldboy-django][4python面试]面试前需要熟练掌握的知识点(待更新)

    python基础 - 生成器 - 装饰器 - 迭代器 - 列表生成式 - 引用,传参 - 面向对象,继承 前端Html: - 词法分析 - 作用域 - 语法分析 - this - Jsonp mysq ...

  9. python中 in, any 和 all用法

    in if x == 1 or y == 1 or z == 1: print('passed') if 1 in (x, y, z): print('passed') any if x or y o ...

  10. nginx访问控制allow、deny(ngx_http_access_module)

    单看nginx模块名ngx_http_access_module,很多人一定很陌生,但是deny和allow相比没一个人不知道的,实际上deny和allow指令属于ngx_http_access_mo ...