Spring是一个开源框架,是一个轻量级的Java开发框架。
Spring的核心是控制发转(IOC)和面向切面(AOP)
 
控制发转(IOC):指的是 对象的创建权反转(交给)给 Spring.
作用是实现了程序的解耦合.(就是原本自己new实体的步骤由spring来做)
面向切面(AOP):需要在哪里加入代码,就在哪里切开把代码放进去
 
Spring也是一个粘合剂,可以集成其他框架
Spring最基本的管理是一个类
 
EE 开发分成三层结构:
 
  • WEB 层:Spring MVC.(M:model(dao ,service entity) , v :view (html,jsp),c controller(controller))
 
  • 业务层:Bean 管理:(IOC)
 
  • 持久层:Spring 的 JDBC 模板.ORM 模板用于整合其他的持久层框架.(mybatis)
 
Spring的本质就是:工厂模式+反射+配置文件
 
 
1.2.2.3 步骤二:创建 web 项目,引入 Spring 的开发包:
 

1.2.2.4 步骤三:引入相关配置文件:
log4j.properties      日志文件
applicationContext.xml        核心配置文件
引入约束
spring自己的标签
 
log4j.properties
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
 
applicationContext.xml        核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/beans/spring-beans.xsd" > <!--p命名空间约束的位置-->
<!--属性注入-->
<!-- 因id的值不能出现特殊字符,所以使用name -->
<!-- 如果同时写两个bean标签 需要添加scope属性'多例prototype' -->
<!--需要有参构造器-->
<bean name="ud" scope="prototype" class="cn.yzq.dao.impl.UserDaoImpl">
<constructor-arg name="name" value="小米"></constructor-arg> <!--name的值是属性(字段)、value是具体传的值-->
<constructor-arg name="age" value=""></constructor-arg>
</bean>
<!-- 使用set赋值,需要无参构造器和set访问方式 -->
<bean name="ud2" scope="prototype" class="cn.yzq.dao.impl.UserDaoImpl">
<property name="name" value="华为"></property> <!--name的值是属性(字段)、value是具体传的值-->
<property name="age" value=""></property>
</bean>
<!-- 对象类型注入 -->
<!-- 首先需要用bean标签创建出一个对象 -->
<bean name="ud3" scope="prototype" class="cn.yzq.dao.impl.UserDaoImpl">
<property name="name" value="iphone"></property>
<property name="age" value=""></property
<!-- 需要创建一个被关联的实体 -->
<property name="car" ref="car"></property> <!-- name的值是属性名(字段名) ref值是要关联的实体 -->
</bean>
<!-- 被管理的实体创建 -->
<bean name="car" class="cn.yzq.dao.impl.Car"></bean> <!-- p命名空间的属性注入 -->
<!-- 基本数据类型 格式 p:属性名="属性的值" -->
<!-- 对象数据类型格式 p:属性名(对象)-ref="关联的实体" -->
<bean name="ud4" class="cn.yzq.dao.impl.UserDaoImpl" p:name="红米" p:age="" p:car-ref="car"></bean> <!-- 复杂类型的注入 -->
<bean name="ud5" scope="prototype" class="cn.yzq.dao.impl.UserDaoImpl">
<!-- name值是属性名 -->
<!--数组注入-->
<property name="nums">
<list>
<value></value>
<value></value>
<value></value>
</list>
</property>
<!--list集合注入-->
<!-- name值是属性名 -->
<property name="lists">
<list>
<value>a</value>
<value>b</value>
<value>c</value>
</list>
</property>
</bean>
<bean name="ud6" scope="prototype" class="cn.yzq.dao.impl.UserDaoImpl">
<!-- 注入 Map 集合 -->
<property name="map">
<map>
<entry key="aaa" value="" />
<entry key="bbb" value="" />
<entry key="ccc" value="" />
</map>
</property> <!-- Properties 的注入 -->
<!--用于给配置文件赋值和取值-->
<property name="properties">
<props>
<prop key="username">root</prop>
<prop key="password"></prop>
</props>
</property>
</bean> </beans>
测试类方法
@Test
public void demo2() {
// 创建 Spring 的工厂类:
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("applicationContext.xml");
// 通过工厂解析 XML 获取 Bean 的实例.
UserDao userDao = (UserDao) applicationContext.getBean("ud2"); //需要与核心配置文件中的id 或 name 相对应
userDao.sayHello();
}
 
1.2.2.8 IOC 和 DI:
IOC :控制反转,将对象的创建权交给了 Spring.
DI :Dependency Injection  依赖注入.需要有 IOC 的环境,Spring 创建这个类的过程中,Spring 将类的依
赖的属性设置进去.
 
spring工厂主类
ApplicatioContext 接口有两个实现类:
 
ClassPathXmlApplicationContext
:加载类路径下 Spring 的配置文件.
FileSystemXmlApplicationContext
:加载本地磁盘下 Spring 的配置文件.
 
 
1.2.3.3 BeanFactory 和 ApplicationContext 的区别:
    BeanFactory :是在 getBean 的时候才会生成类的实例.(懒加载)
ApplicationContext :在加载 applicationContext.xml(容器启动)时候就会创建.
BeanFactory 和 FactoryBean 的区别:
BeanFactory:是一个底层工厂,作用:创建bean的工厂
FactoryBean:指的是工厂下面的一个具体的实现类,通过类来创建对象
 
1.2.5  Spring 的相关配置: 
1.2.5.1 id 属性和 name 属性标签的配置
id :Bean 起个名字. 在约束中采用 ID 的约束:唯一. 必须以字母开始,可以使用字母、数字、连字符、
下划线、句话、冒号 id:不能出现特殊字符.
<bean id=”bookAction”>
name:Bean 起个名字. 没有采用 ID 的约束. name:出现特殊字符.如果<bean>没有 id 的话 , name 可
以当做 id 使用.
* 整合 struts1 的时候:
<bean name=”/loginAction” > 
1.2.5.2 scope 属性:Bean 的作用范围.
* singleton
:默认值,单例的.
* prototype
:多例的.
 
* request
:WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中.
   
* session
:WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中.
   
 
 
    • globalSession :WEB 项目中,应用在 Porlet 环境.如果没有 Porlet 环境那么 globalSession 相当
 
  • session.
 
 
1.2.5.3 Bean 的生命周期的配置:
通过配置<bean>标签上的 init-method 作为 Bean 的初始化的时候执行的方法,配置 destroy-method
作为 Bean 的销毁的时候执行的方法。
销毁方法想要执行,需要是单例创建的 Bean 而且在工厂关闭的时候,Bean 才会被销毁.
例:
    
<bean name="ud" init-method="show" scope="prototype"  class="cn.yzq.dao.impl.UserDaoImpl">
<constructor-arg name="name" value="小米"></constructor-arg>
<constructor-arg name="age" value=""></constructor-arg>
</bean>
<!--show是实现类中的一个方法 ,在执行下面代码之前先执行show方法-->
<!--destroy-method使用方法一致-->
 
1.2.6.4 名称空间 p 的属性注入的方式:Spring2.x 版本后提供的方式.
首先引入p命名空间的约束
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

小记---------spring框架之IOC理解的更多相关文章

  1. Spring框架之IOC(控制反转)

    [TOC] 第一章Spring框架简介 IOC(控制反转)和AOP(面向方面编程)作为Spring框架的两个核心,很好地实现了解耦合.所以,简单来说,Spring是一个轻量级的控制反转(IoC)和面向 ...

  2. Spring框架中IoC(控制反转)的原理(转)

    原文链接:Spring框架中IoC(控制反转)的原理 一.IoC的基础知识以及原理: 1.IoC理论的背景:在采用面向对象方法设计的软件系统中,底层实现都是由N个对象组成的,所有的对象通过彼此的合作, ...

  3. Spring框架(3)---IOC装配Bean(注解方式)

    IOC装配Bean(注解方式) 上面一遍文章讲了通过xml来装配Bean,那么这篇来讲注解方式来讲装配Bean对象 注解方式需要在原先的基础上重新配置环境: (1)Component标签举例 1:导入 ...

  4. Spring框架的IOC核心功能快速入门

    2. 步骤一:下载Spring框架的开发包 * 官网:http://spring.io/ * 下载地址:http://repo.springsource.org/libs-release-local/ ...

  5. (精简)Spring框架的IoC(替代工厂类实现方法)和AOP(定义规则,约定大于配置)

    Spring的核心框架主要包含两个技术,分别用来处理工厂类,以及事务处理和连接管理的. 两大核心概念 1)  IoC:控制反转,在现在的开发中,如果想建立对象并设置属性,是需要先new对象,再通过se ...

  6. 初识Spring框架实现IOC和DI(依赖注入)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的, IoC是 ...

  7. Spring框架之IoC和AOP

    Spring框架简介: 2003年2月,Spring框架正式成为一个开源项目,并发布于SourceForge中.致力于Java EE应用的各种解决方案,而并不是仅仅专注于某一层的方案,是企业应用开发的 ...

  8. Spring框架的IOC(控制反转)

    1.1.IoC是什么 Ioc-Inversion of Control,即"控制反转",不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制, ...

  9. Spring框架(2)---IOC装配Bean(xml配置方式)

    IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...

随机推荐

  1. jeecg中自定义dialog,实现窗体的弹出

    自定一个dialog,在子窗体中写一个方法,然后通过iframe进行调取function createwindowoktext(title, addurl,width,height,oktext,ca ...

  2. ngx_http_auth_request自用

    server { listen 80; server_name www.php12.cn php12.mama1314.com; root /var/www/shf; location / { ind ...

  3. 异常处理(Exception Handling)

    java里的异常处理(Exception)Exception 是在程序执行过程中发生的一些不希望发生的事情,这些事情如果不被好好处理,就会导致奇怪的结果或者是程序终结.Exception Handle ...

  4. css垂直居中布局总结

    简介 总结记录一下经常需要用到垂直居中布局,欢迎补充(空手套...O(∩_∩)O) 以下栗子如果未特别标注同一使用这样的html结构 <div class="container&quo ...

  5. 撩测试MM神器cypress使用入门

    不很久不很久以前 据说某家公司有两位前端,天天撸bug,为啥嘞?只怪测试MM倾人国,轻语哥哥有bug.✧(๑•̀ㅂ•́)و✧ 可是最近两位有点犯愁 Σ(っ °Д °;)っ.测试MM有几次提了紧急bug ...

  6. websocket聊天体验

    light-example-4j/websocket目录有client-to-server.peer-to-peer两个示例项目,解决了我的两个问题:在线聊天.日志查看. 在线聊天,后续可以支持:最近 ...

  7. Nginx事件管理之概念描述

    1. Nginx事件管理概述 首先,Nginx定义了一个核心模块ngx_events_module,这样在Nginx启动时会调用ngx_init_cycle方法解析配置项,一旦在 nginx.conf ...

  8. PHP中Smarty的fetch()方法

    fetch 取得输出的内容 string fetch (string template [, string cache_id [, string compile_id]]) 返回一个模板输出的内容(H ...

  9. 微信小程序之生成二维码

    最近项目中涉及到小程序的生成二维码,很是头疼,经过多次摸索,整理出了自己的一些思想方法,如有不足,欢迎指正. 首先完全按照小程序的结构依次填坑. pages--index.wxml <view ...

  10. invalid new-expression of abstract class type 'CurveFittingEdge'

    目录 一 报错原因 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 报错原因 今天遇到了一个之前从未遇到的报错: error: invalid new-expression of abstr ...