1.入门

  Spring是简化java开发的一个框架,其中IoC和AOP是Spring的两个重要核心。由于Spring是非侵入性的,通过Ioc容器来管理bean的生命周期,还整合了许多其他的优秀框架,所以极大的简化了我们的开发过程。Spring的核心包括Beans、Core、Context、SpEL。对应的包的文件名形式为spring-expression-4.0.0.RELEASE.jar这样的形式。在进行Spring开发时,我们必须引入这四个核心包和一个日志包,导入Referenced Libraries中。就选择这些包,然后添加。然后新建一份Spring的配置文件。操作为添加Spring下的Spring Bean Configruation File文件。这样环境就搭建好了...

  那么如何加载一个Bean呢?(这里需要了解什么是IoC和DI)

  第一步:先在xml配置文件配置好bean,如下:

1    <bean id="zhao" class="com.test.demo.Person">
<property name="name" value="赵二狗"></property>
<property name="age" value="18"></property>
</bean>

  第二步:创建IoC容器,加载Bean,如下:

ApplicationContext c =new ClassPathXmlApplicationContext("context.xml");
Person zhao = (Person) c.getBean("zhao");
System.out.println(zhao.toString());

2.IOC&DI概述:

  IOC为控制反转,DI为依赖注入,DI是IoC的更具体的说明。

  IOC的演化过程为:分离接口与实现->抽象工厂->反转控制

3.Bean的配置:

  Bean的配置形式有2种:一种基于xml文件的,一种基于注解的。

  Bean的配置方式有:通过反射的方式,要求bean中有无参数的构造器。

  Spring提供2中IoC容器的实现:一种基于BeanFactory的,一种基于BeanFactory的子接口ApplicationContext的,提供了更多的功能,一般使用后者进行初始化。

  Bean的获取方式有:通过id名称和通过class如下:

Person zhao = (Person) c.getBean("zhao"); Person zhao1 = c.getBean(Person.class);

  属性的注入方式有:set方法注入,构造器注入,抽象工厂注入(不推荐),构造器注入配置如下:

  构造器注入还可以有index、type属性来精确注入。

<bean id = "chen" class="com.test.demo.Person" index="" type="">
<constructor-arg value="陈三蛋"></constructor-arg>
</bean>

  特殊字符通过<![CDATA[]]>来引入。

    <property name="word">
      <value><![CDATA[<HTML>天下第一]]></value>
</property>

  通过ref属性引入标签,也可以内部创建bean,内部bean不能被外部引用

<property name="car" ref="benz"></property>

  支持联级注入:

<property name="car.name" value="奥迪Q800"></property>

  注入list、set、map集合类:

<property name="cars">
<list>
<ref bean="benz"/>
<ref bean="benz"/>
</list>
</property>

  java.util.Properties的配置方式://HashTable的一个子类
  <props><prop key="">value</prop>...

  外部配置<map>,配置独立的集合bean,引入util

    <util:list id="myCars">
<ref bean="benz"/>
<ref bean="benz"/>
</util:list>

  使用p命名空间:引入p命名空间,简化配置

<bean id="zhao" class="com.test.demo.Person" p:name="赵铁蛋"  p:cars-ref="myCars"></bean>

4.自动装配:  

  SpringIOC容器可以自动状态。仅仅需要在<bean>的autowire属性里指定自动装配的模式。 缺点,会配置所有属性,这就不是很好。
  byType(多个装配容易初问题)、byName(id名和setter方法中的名字一致) 、constructor(不推荐)

5.配置bean的关系:

  parent=""继承配置
  abstract="true"声明抽象bean不能配置。
  配置关联关系depends-on属性,表明在配置该bean之前需要配置好其他bean
  通过逗号和空格指定多个bean

Spring入门第一课:Spring基础与配置Bean的更多相关文章

  1. Spring入门第一课

    今天先不讲Spring是什么. Spring网址:http://projects.spring.io/spring-framework/ Eclipse 安装开发IDE 在Eclipse Market ...

  2. Spring入门(8)-基于Java配置而不是XML

    Spring入门(8)-基于Java配置而不是XML 本文介绍如何应用Java配置而不是通过XML配置Spring. 0. 目录 声明一个简单Bean 声明一个复杂Bean 1. 声明一个简单Bean ...

  3. emacs 入门第一课:Emacs里的基本概念

    Table of Contents 无聊的开场白 buffer(缓冲区) window(窗口)与frame Emacs的mode Emacs Lisp 函数function.命令command.键绑定 ...

  4. Spring 通过工厂方法(Factory Method)来配置bean

    Spring 通过工厂方法(Factory Method)来配置bean 在Spring的世界中, 我们通常会利用bean config file 或者 annotation注解方式来配置bean. ...

  5. Spring入门(2)-通过构造器注入Bean

    Spring入门(2)-通过构造器注入Bean 前一篇文章将了最基本的spring例子,这篇文章中,介绍一下带有参数的构造函数和通过构造器注入对象引用. 0. 目录 带有参数的构造函数 通过构造器注入 ...

  6. Asp.Net Web API 2(入门)第一课

    Asp.Net Web API 2(入门)第一课   前言 Http不仅仅服务于Web Pages.它也是一个创建展示服务和数据的API的强大平台.Http是简单的.灵活的.无处不在的.你能想象到几乎 ...

  7. Spring入门第二课:Spring配置Bean的细节

    1.配置bean的作用域: 通过配置scope属性可以bean的作用域,参数有 prototype.request.session.singleton. 1)singleton为单例,IoC容器只会创 ...

  8. Android入门第一课之Java基础

    通知:由于本周六场地申请没通过,所以本周的培训临时取消. 今天给大家带来的是Android入门的第一课,由于教室申请的不确定性,因此,每次培训的内容都会在博客先提前释放出来.首先Android的APP ...

  9. Spring入门第二课

    看代码 package logan.spring.study; public class HelloWorld { private String name; public void setName2( ...

随机推荐

  1. 排序算法lowb三人组-选择排序

    def get_min_pos(li): min_pos = 0 for i in range(1, len(li)): if li[i] < li[min_pos]: min_pos = i ...

  2. cf1043C. Smallest Word(贪心)

    题意 题目链接 Sol 这题打cf的时候真的是脑残,自己造了个abcdad的数据开心的玩了半天一脸懵逼...最后还好ycr大佬给了个思路不然就凉透了... 首先不难看出我们最后一定可以把字符串弄成\( ...

  3. 解决Win7远程连接灰色无法选中的问题

    内网开发最常用的莫过于Windows的远程连接服务了.但是有时候这个远程连接是灰色的,无法勾选.折腾了各种办法.最后在这里找到了答案.https://answers.microsoft.com/en- ...

  4. Swiper正方体,左右翻转轮播图

    今天的轮播图,和往常的有一点点不同哦!可以说是有一点点的3D效果!因为他在运动的时候,是以正方体的样子左右滚动的; 先引插件: <link rel="stylesheet" ...

  5. 点击空白处--某个div 消失

    背景:1.需要在 easyui grid 的编辑框 获取焦点的时候,在正下方展示费用类型的网格 2.在点击费用类型网格以外的地方,该网格消失 思路: 一.用easyui 的panel 作为费用类型网格 ...

  6. sqoop简单介绍

    一简介 Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS ...

  7. Python爬虫教程-31-创建 Scrapy 爬虫框架项目

    本篇是介绍在 Anaconda 环境下,创建 Scrapy 爬虫框架项目的步骤,且介绍比较详细 Python爬虫教程-31-创建 Scrapy 爬虫框架项目 首先说一下,本篇是在 Anaconda 环 ...

  8. Sandworm Attack小结

    这个漏洞刚出来时就分析过,当时大致弄明白了原理,但对很多细节和原理还是一知半解.后来开始找工作……今天终于有时间来把欠的这部分功课补上. 这个漏洞网上的各种中英文分析已经很多了,因此这里我只根据自己的 ...

  9. Struts学习-Hibernate2

    一. 1.配置 <!-- hibernate-core --> <dependency> <groupId>org.hibernate</groupId> ...

  10. IE 浏览器中英文切换

    Oracle相关产品浏览器中可以调节显示中英文