Spring框架学习之IOC(一)

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

Spring相关知识

spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器。可单独使用,通常也与其他框架整合使用,例如SSH、SSM。

IOC:控制反转

  控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系。等同于DI依赖注入

AOP:面向切面

IOC

下面举个例子HelloWOrld:

 1 package per.zww.spring.beans;
2
3 public class HelloWorld {
4 public HelloWorld() {
5 // TODO Auto-generated constructor stub
6 System.out.println("Constractor...");
7 }
8
9 private String name;
10
11 public void setName(String name) {
12 System.out.println("setter...");
13 this.name = name;
14 }
15
16 public void hello() {
17 System.out.println("hello:"+name);
18 }
19 }

如果我们不使用IOC而调用类里面的hello()的话,我们的Main类会这样写:

1 public class Main {
2 public static void main(String[] args) {
3 HelloWorld helloWorld=new HelloWorld();
4 helloWorld.setName("zhaoww");
5 helloWorld.hello();
6 }
7 }

而当我们使用IOC,则不需要自行new一个对象,也不需setName。只需要这样写:

public class Main {
public static void main(String[] args) {
//创建IOC容器,类路径加载配置文件
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
//获取bean,也可用其他方法
HelloWorld helloWorld2= (HelloWorld) applicationContext.getBean("helloWorld");
helloWorld2.hello();
}
}

当然我们还是要配置xml文件的,配置文件如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
5
6 <!-- 配置bean -->
7 <bean id="helloWorld" class="per.zww.spring.beans.HelloWorld">
8 <property name="name" value="zhaoww"></property>
9 </bean>
10
11 </beans>

具体来看:
Spring提供两种的IOC容器
1.BeanFactory
2.ApplicationContext [基本都用这个]
  是BeanFactory的子接口

注入方式
1.属性注入 最常用
2.构造器注入
    默认index顺序
    同时也可通过指定参数类型以区分重载的构造器
3.工厂注入[不常使用]

bean的配置要点
1.通过反射的机制,所以必须有无参构造器
2.name 必须与getter相对应
3.property除了value,还能用ref指向一个对象
4.可用p标签等简化书写

自动装配[个人觉得不建议使用]
autowire(同样是在xml文件里的)
1.byType >1 抛出异常
2.byName setter属性名匹配则装配,否则不装配(ref)
3.构造器(不推荐)

Bean之间关系
1.继承
    parent属性
2.依赖 
    depends-on属性,依赖的Bean必须在本Bean实例化之前创建好

Bean的作用域
    scope 默认的作用域,Bean是单例的
    <bean id="" class="" scope="singleton/prototype(原型)/request(少)/session(少)"></bean>
    singleton:容器初始化时是便已创建好Bean,单例
    prototype:容器初始化时不创建Bean实例,而在每次请求时创建新的实例 (ps:struts2整合)

转自:http://www.cnblogs.com/zhaoww/p/5103570.html

Spring框架学习之IOC(一)的更多相关文章

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

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

  2. spring框架学习(一)——IOC/DI

    什么是Spring框架: Spring是一个基于IOC和AOP的结构J2EE系统的框架: IOC 反转控制 是Spring的基础,Inversion Of Control,简单说就是创建对象由以前的程 ...

  3. Spring框架学习一

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

  4. Spring框架学习1

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

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

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

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

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

  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. 解决Deepin每次打开Chome都提示解锁登录密钥环的麻烦

    密钥环是linux系统用于安全保存程序私密数据的模块,可以用于加密保存密码.证书.密钥等安全数据.chrome的密钥环用于保存本地访问站点密码或缓存从google服务器同步下来的访问站点的密码. De ...

  2. C++ STL标准模板库(queue)

    //queue的使用 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<queue> using name ...

  3. 初识NuGet及快速安装使用

    为什么要使用NuGet 简单的说NuGet可以是我们的工作更方便,当我们的项目里要引用到的一些库时候,比如JQuery.Newtonsoft.Json. log4net等,我们需要从网上下载这些库,然 ...

  4. [转]移动互联网应用技术架构简介-Restful服务

    Restful是基于网络的软件系统架构风格.其优先考虑分布性和扩展性,而不是安全.错误处理.对象映射. 所以Restful架构特别适用的场合为用户快速增长的互联网和移动互联网领域,看起来很容易理解,以 ...

  5. Openstack(Kilo)安装系列之nova(八)

    计算节点 To install and configure the Compute hypervisor components 1.Install the packages: yum install ...

  6. 浅析Java与C#的事件处理机制

    http://www.cnblogs.com/OOAbooke/archive/2012/02/18/2356899.html

  7. ASP.NET Web API 2中的属性路由(Attribute Routing)

    如何启用属性路由并描述属性路由的各种选项? Why Attribute Routing? Web API的第一个版本使用基于约定的路由.在这种类型的路由中,您可以定义一个或多个路由模板,这些模板基本上 ...

  8. win 8升级win8.1的几个问题

        对于习惯了win7来说的小朋友,win8的使用简直有种想砸电脑的冲动啊,特别是玩游戏的小朋友,win8各种bug.对于游戏.咳咳,我只是多说了,我们都是爱学习的好孩子,少玩游戏,少撸.简单说一 ...

  9. Android 触摸及手势操作GestureDetector

    现在的智能手机不敢说百分百的都是触摸屏,也应该是百分之九九以上为触摸屏了,触摸屏为我们操作无键盘.无鼠标的手机系统带来了很多的便利.当用户触摸屏幕时会产生很多的触摸事件,down.up.move等等. ...

  10. 【MVC model 验证失效 】【Unexpected token u in JSON at position 0】【jquery-plugin-validation】

    问题描述:mvc model 调用jquery-plugin-validation 实现 前台的数据验证,时报错 Unexpected token u in JSON at position 0 很讨 ...