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. 【WordPress】CentOS 6.10 测试WP发送邮件失败

    1.错误信息如下: SMTP -> ERROR: Failed to connect to server: Permission denied (13) 2.解决方法: https://gist ...

  2. CentOS Linux 安装IPSec+L2TP

    第二层隧道协议L2TP(Layer 2 Tunneling Protocol)是一种工业标准的Internet隧道协议,它使用UDP的1701端口进行通信.L2TP本身并没有任何加密,但是我们可以使用 ...

  3. vue 组件的书写

    简单的来说是 vue组件最核心的就是props和自定义函数,来实现组件的开发 最简单的一个组件 子组件如下: <template> <div class="bgClass& ...

  4. B1007 素数对猜想

    B1007 素数对猜想 让我们定义\(d_n\)为:\(d_n =p_{n+1}−p_n\),其中\(p_i\)是第i个素数.显然有\(d_1=1\),且对于n>1有\(d_n\)是偶数.&qu ...

  5. [Hdu1693]Eat the Trees(插头DP)

    Description 题意:在n*m(1<=N, M<=11 )的矩阵中,有些格子有树,没有树的格子不能到达,找一条或多条回路,吃完所有的树,求有多少种方法. Solution 插头DP ...

  6. Asp.net Mvc Action重定向总结

    摘自博客园 程晓晖 [HttpPost]        public ActionResult StudentList( string StudName, string studName, DateT ...

  7. 12,scrapy框架之post请求

    今日概要 递归爬取解析多页页面数据 scrapy的post请求发送 1.递归爬取解析多页页面数据 - 需求:将糗事百科所有页码的作者和段子内容数据进行爬取切持久化存储 - 需求分析:每一个页面对应一个 ...

  8. C#实现eval 进行四则运算(有码)

    在JavaScript中实现四则运算很简单,只需要调用eval函数就行了,但是不知道什么原因万能的.NET却没有封装这个函数~ 在这里为大家封装了一个C#版本的eval函数,具体的设计参考了<大 ...

  9. jquery ajax return jsonresult pattern

    //javascriptvar queryParams = {    "userId": userId,    "factoryId": factoryId } ...

  10. MySQL一对一:一对多:多对多

    学生表和课程表可以多对多 一个学生可以学多门课程 一门课程可以有多个学生: 多对多 *** 一个学生对应一个班级 一个班级对应多个学生: 一对多 *** 一个老师对应多个学生 多个学生对应一个老师:一 ...