Spring的四个核心组件

1.beans

  Bean是包装应用程序自定义对象Object的 Object中保存数据
2.core 
3.context

  一个Bean的关系集合
4.expression

ApplicationContext ctx=new ClasspathXmlApplicationContext("applicationContext.xml");
//容器一旦生成 所有bean都被加载到内存中

Printer service=(Printer)ctx.getBean("printer");

1.Spring容器创建的时候会将所有配置的Bean创建对象,默认bean都是单例的

BeanFactory和ApplicationContext

2.代码通过个体Bean()方法从容器获取指定的bean实例,容器会首先调用Bean类的无参构造器创建实例对象

3.bean的作用域
scope="prototype"

  原型模式:真正使用的时候才会创建 每获取一次都会创建不同对象

scope="singleton"

  单例模式:容器初始化时需要使用name建 每次获取的都是同一个对象,默认值
<bean id="stu1" class="xx.xx.Student" scope="prototype" ></bean>

4.bean的生命周期(见另一篇博客)

5.bean的id和name属性
当bean中含有特殊字符时需要使用name属性

6.基于xml的DI(Dependency Injection)
  Spring 提供了多种依赖注入的手段

  除了通过属性的setter访问器

  还可以通过带参构造方法实现依赖注入

注入类型

1.设值注入

<bean id="stu1" class="xx.xx.Student" >
<property name="name" value="斯沃"/>
<property name="age" value="18"/>
</bean>

2.构造注入

<bean id="stu1" class="xx.xx.Student" >
<constructor-arg index="0" value="斯沃"></constructor-arg>
<constructor-arg index="1" value="18"></constructor-arg>
</bean>
public Student(String name, int age){
this.name=name;
this.age=age;
}

域属性注入(Java Bean属性)

<bean id=mcar" class="xx.xx.Car" >
<property name="color" value="红色"/>
</bean> <bean id="stu1" class="xx.xx.Student" >
<property name="name" value="斯沃"/>
<property name="age" value="18"/>
<property name="car" ref="mcar"/>
</bean>

真正开发时推荐使用设值注入 因为要使用构造注入 Bean必须写出所有的构造

3.命名空间注入

xmlns:p="http://www.springframework.org/schema/p"    

<bean id="stu1" class="xx.xx.Student" p:name="测试" p:age="18" p:car-ref="mcar">
</bean>
//命名空间p注入 p:xxx property
//同样 有命名空间 c注入

*4.集合属性注入

public class CollectionBean{
private List<String> list;
}

1.数组array

<property name="names">
<array>
<value>a</value>
<value>b</value>
</array>
</property>

2.List

<bean id="List" class="xx.xx.CollectionBean">
<property name="list">
<list>
<value>sword</value>
<value>fizz</value>
</list>
</property>
</bean>

3.Set
4.Map

<bean id="Map" class="xx.xx.CollectionBean">
<property name="map">
<map>
<entry key="a">
<value>shit</value>
</entry>
</map>
</property>
</bean>

Properties

7.基于注解的依赖注入

1.引入 spring-aop-4.2.0.REKEASE.jar

2.添加xsd约束

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

3.配置包扫描器  

  配置了包扫描器 该包下以及子包中的类才可以被Spring扫描
  去寻找被注解的类和属性,让Spring容器管理赋值

component:组件
scan:
<context:component-scan base-package="sword.po"></context:component-scan>

//标识这个类
@Compoent("info")
public class User{
//普通属性
@Value("斯沃")
private String name;
@Value("18")
private int age;
//域属性
@Resource
private Car car;
} //@Autowired
@Compoent("car")
public class Car{
@Value("red")
private String color;
}

等价
@Compoent("car") //不分层
@Repository("info") //dao
@Service //biz
@Controller //Action

【学习笔记】 使用XML配置和注解实现Spring的依赖注入DI (2-3-2)的更多相关文章

  1. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  2. go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时])

    目录 go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时]) 静态配置 flag注入 在线热加载配置 远程配置中心 go微 ...

  3. Qt5学习笔记(1)-环境配置(win+64bit+VS2013)

    Qt5学习笔记(1)-环境配置 工欲善其事必先-不装-所以装软件 久不露面,赶紧打下酱油. 下载 地址:http://download.qt.io/ 这个小网页就可以下载到跟Qt有关的几乎所有大部分东 ...

  4. mybatis 学习笔记(四):mybatis 和 spring 的整合

    mybatis 学习笔记(四):mybatis 和 spring 的整合 尝试一下整合 mybatis 和 spring. 思路 spring通过单例方式管理SqlSessionFactory. sp ...

  5. Spring IOC 依赖注入的两种方式XML和注解

    依赖注入的原理 依赖注入的方式---XML配置 依赖注入的方式---注解的方式 Spring 它的核心就是IOC和AOP.而IOC中实现Bean注入的实现方式之一就是DI(依赖注入). 一 DI的原理 ...

  6. Spring框架学习笔记(1)——控制反转IOC与依赖注入DI

    Spring框架的主要作用,就是提供了一个容器,使用该容器就可以创建并管理对象.比如说Dao类等,又或者是具有多依赖关系的类(Student类中包含有Teacher类的成员变量) Spring有两个核 ...

  7. 框架源码系列九:依赖注入DI、三种Bean配置方式的注册和实例化过程

    一.依赖注入DI 学习目标1)搞清楚构造参数依赖注入的过程及类2)搞清楚注解方式的属性依赖注入在哪里完成的.学习思路1)思考我们手写时是如何做的2)读 spring 源码对比看它的实现3)Spring ...

  8. Spring.NET依赖注入框架学习--简单对象注入

    Spring.NET依赖注入框架学习--简单对象注入 在前面的俩篇中讲解了依赖注入的概念以及Spring.NET框架的核心模块介绍,今天就要看看怎么来使用Spring.NET实现一个简单的对象注入 常 ...

  9. 07 Spring框架 依赖注入(四)基于注解的依赖注入

    前面几节我们都在使用xml进行依赖的注入,但是在实际的开发中我们往往偏爱于使用注解进行依赖注入,因为这样更符合我们人的思维,并且更加快捷,本节就来讲述Spring基于注解的依赖注入: 信息注入注解 @ ...

随机推荐

  1. CCF系列之数字排序(201503-2)

    问题描述试题编号: 201503-2试题名称: 数字排序时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输 ...

  2. Java中的SerialVersionUID

    Java中的SerialVersionUID 序列化及SergalVersionUID困扰着许多Java开发人员.我经常会看到这样的问题,什么是SerialVersionUID,如果实现了Serial ...

  3. linux ubuntu 远程ssh登录

    当我们有一个Linux系统的时候,可能用到远程ssh登录,当你是没有界面的系统的时候也会用到,远程操作起来比较方便. 首先我们的电脑默认是不安装ssh的,就是无法通过ssh远程连接,所以要安装shh. ...

  4. JavaScript Date 时间对象方法

    Date(日期/时间对象) Date 操作日期和时间的对象 Date.getDate( ) 返回一个月中的某一天 Date.getDay( ) 返回一周中的某一天 Date.getFullYear( ...

  5. Python判断文件是否存在的三种方法【转】

    转:http://www.cnblogs.com/jhao/p/7243043.html 通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先 ...

  6. laravel5.5 when()的用法

    当你在使用where语句有前提条件时,比如某值为1的时候才执行where子句,否则不执行,这个时候,laravel5.5新出了一个简便方法when($arg,fun1[,fun2]). 具体用法如下: ...

  7. 渗透测试,form对象类型转换,简单demo

    最近公司的项目在进行国家某行业的安全检测,涉及到项目安全渗透等方面的问题: 参与项目的渗透等改造,是一个机遇与挑战,今后对与项目安全等方面会思考更多: 下面说说form表单对象提交,为了防止抓包,后台 ...

  8. [DeeplearningAI笔记]神经网络与深度学习人工智能行业大师访谈

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 吴恩达采访Geoffrey Hinton NG:前几十年,你就已经发明了这么多神经网络和深度学习相关的概念,我其实很好奇,在这么多你发明的东西中 ...

  9. java中的二叉树排序问题

    原创:转载请注明出处 目的:想用java实现二叉树排序算法 思想:利用java中面向对象的思想,即: Tree:类 树根Tree:root //static所属于每一个Tree 左节点Tree:lef ...

  10. CSS选择器之通配符选择器和多元素选择器

    1.通配符选择器 如果希望所有的元素都符合某一种样式,可以使用通配符选择器. 基本语法: *{margin:0; padding:0} 可以让所有的html元素的外边距和内边距都默认为0. 写一段ht ...