什么是Spring框架:

  Spring是一个基于IOC和AOP的结构J2EE系统的框架:

  IOC 反转控制 是Spring的基础,Inversion Of Control,简单说就是创建对象由以前的程序员自己new 构造方法来调用,变成了交由Spring创建对象;

  DI 依赖注入 Dependency Inject, 简单地说就是拿到的对象的属性,已经被注入好相关值了,直接使用即可。

原理分析:

  以获取对象的方式来进行比较

    传统的方式:
      通过new 关键字主动创建一个对象。
    IOC方式:
      对象的生命周期由Spring来管理,直接从Spring那里去获取一个对象。 IOC是反转控制

      (Inversion Of Control)的缩写,就像控制权从本来在自己手里,交给了Spring。

  打个比喻:
    传统方式:相当于你自己去菜市场new 了一只鸡,不过是生鸡,要自己拔毛,去内脏,再上

         花椒,酱油,烤制,经过各种工序之后,才可以食用。
    用 IOC:相当于去馆子(Spring)点了一只鸡,交到你手上的时候,已经五味俱全,你就只管

        吃就行了。

接下来通过运行TestSpring演示如何用Spring获取一个对象,并打印其name以及使用IOC的方式,对Product对象,注入一个Category对象

(创建项目以及导包过程已省略,关于spring项目中需要的jar包介绍,请点击此处

准备pojo Category 、Product,用来演示IOC和DI:

package com.spring.pojo;

public class Category {

    public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private int id;
private String name;
}
package com.spring.pojo;

public class Product {

    private int id;
private String name;
private Category category;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
}

创建applicationContext.xml:

    在src目录下新建applicationContext.xml文件;
    applicationContext.xml是Spring的核心配置文件,通过关键字p即可获取Product对象

    (IOC过程),该对象获取的时候,即被注入了字符串"product 1“到name属性中(DI过程)。

    在创建Product的时候注入一个Category对象,注意,这里要使用ref来注入另一个对象(DI过程)

<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean name="c" class="com.spring.pojo.Category">
<property name="name" value="category 1" />
</bean>
   <bean name="p" class="com.how2java.pojo.Product">
       <property name="name" value="product1" />
            <!--使用ref注入category对象-->
       <property name="category" ref="c" />
    </bean>
</beans>
TestSpring:
    测试代码,演示通过spring获取product对象,以及该对象被注入的name和category属性。如图所示,可以打印
    出通过Spring拿到的Product对象的name属性和Category对象的name属性。
          

package com.spring.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.spring.pojo.Product; public class TestSpring { public static void main(String[] args) {
//读取配置文件
ApplicationContext context = new ClassPathXmlApplicationContext(
          new String[] { "applicationContext.xml" });
//通过关键字“c”,从spring中获取Category对象
Product p = (Product) context.getBean("p");
     
//p.getName()获取p对象中属性name的值,p.getCategory().getName()获取category的name值
System.out.println(p.getName());
     System.out.println(p.getCategory().getName());
}
}

注:读取配置文件:

//方式一:(只能读取一个配置文件)
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//方式二:(可读取一个或多个配置文件)
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "applicationContext.xml" });

原文地址:https://how2j.cn/k/spring/spring-injection/88.html#nowhere

spring框架学习(一)——IOC/DI的更多相关文章

  1. Spring框架学习之IOC(一)

    Spring框架学习之IOC(一) 先前粗浅地学过Spring框架,但当时忙于考试及后期实习未将其记录,于是趁着最近还有几天的空闲时间,将其稍微整理一下,以备后期查看. Spring相关知识 spri ...

  2. Spring框架学习之IOC(二)

    Spring框架学习之IOC(二) 接着上一篇的内容,下面开始IOC基于注解装配相关的内容 在 classpath 中扫描组件 <context:component-scan> 特定组件包 ...

  3. Spring框架学习总结(上)

    目录 1.Spring的概述 2.Spring的入门(IOC) 3.Spring的工厂类 4.Spring的配置 5.Spring的属性注入 6.Spring的分模块开发的配置 @ 1.Spring的 ...

  4. Spring框架学习笔记(1)

    Spring 框架学习笔记(1) 一.简介 Rod Johnson(spring之父) Spring是分层的Java SE/EE应用 full-stack(服务端的全栈)轻量级(跟EJB比)开源框架, ...

  5. Spring框架学习一

    Spring框架学习,转自http://blog.csdn.net/lishuangzhe7047/article/details/20740209 Spring框架学习(一) 1.什么是Spring ...

  6. Spring框架学习1

    AnonymouL 兴之所至,心之所安;尽其在我,顺其自然 新随笔 管理   Spring框架学习(一)   阅读目录 一. spring概述 核心容器: Spring 上下文: Spring AOP ...

  7. spring框架学习(三)junit单元测试

    spring框架学习(三)junit单元测试 单元测试不是头一次听说了,但只是听说从来没有用过.一个模块怎么测试呢,是不是得专门为一单元写一个测试程序,然后将测试单元代码拿过来测试? 我是这么想的.学 ...

  8. spring 框架学习网站

    spring 框架学习网站 NO1 http://www.mkyong.com NO2 https://spring.io/docs/reference

  9. Spring框架学习笔记(5)——Spring Boot创建与使用

    Spring Boot可以更为方便地搭建一个Web系统,之后服务器上部署也较为方便 创建Spring boot项目 1. 使用IDEA创建项目 2. 修改groupid和artifact 3. 一路n ...

随机推荐

  1. 使用Attribute校验对象属性数据是否合法

    一.前言 说来惭愧,做了几年ASP.NET最近才有机会使用MVC开发生产项目.项目中新增.编辑表单提交存在大量服务端数据格式校验,各种if else显得代码过于繁琐,特别是表单数据比较多的时候尤为恶心 ...

  2. [转载]深入了解 Struts 1.1

    转载自:http://www.ibm.com/developerworks/cn/java/l-struts1-1/ 摘要:作为基于 MVC 模式的 Web 应用最经典框架,Struts 已经正式推出 ...

  3. TCP服务器连接相关知识点

    # netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c 68 CLOSE_WAIT2 CLOSING136 ESTABLISHED38 FIN_WAIT11 ...

  4. 异常详细信息: System.Data.SqlClient.SqlException:用户 &#39;IIS APPPOOL\DefaultAppPool&#39; 登录失败解决办法

    1.安全性---登录名---新建登录名 2.常规----搜索 3.添加SERVICE用户-- 4.服务器角色---勾上sysadmin: IIS中: 应用程序池---对应的程序池上右键---高级设置 ...

  5. Oracle合并函数内容

    --MINUS去差集,取第一个集合有的而第二集合没有的,并以第一个字段排序select t.bumenbm from T_HQ_BM t minus select b.bumenbm from t_h ...

  6. UVa 12100打印队列(队列)

    原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  7. 1.1-学习Opencv与MFC混合编程之---利用画图函数,生成视频,并写入视频文件

    源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961674 写视频文件 Ø 新建菜单项,Learning OpenCV——> OpenCVr ...

  8. AWS免费套餐服务器部署NETCORE网站

    之前的linode充了5美元,一个月就用完了,还是创建的最便宜的服务器的!!! 以前一直想用用aws的所谓的免费套餐服务器的,现在linode过期了,可以试着用用了 下面是我的操作流程,包含错误及解决 ...

  9. python常用库安装网址

    python常用库安装网址如下: http://pypi.python.org/pypi

  10. 记一次jvm异常排查及优化

    为方便自己查看,根据工作遇到的问题,转载并整理以下jvm优化内容 有次接到客服反馈,生产系统异常,无法访问.接到通知紧急上后台跟踪,查看了数据库死锁情况--正常,接着查看tomcat 内存溢出--正常 ...