Spring

作者: yangliangliang | 来源:发表于2017-06-13 15:58 被阅读9次

    对象创建是否能写死?

    对象的创建细节?

    对象数量

    action 多个  【维护成员变量】

    service 一个 【不需要维护公共变量】

    dao 一个 【不需要维护公共变量】

    创建时间

    action访问时候创建

    service启动时候创建

    dao启动时候创建

    3.对象的依赖关系

    action依赖service

    service依赖dao

    总结:

    spring就是解决上面的问题的!

    简单来说,就是处理对象的创建的、以及对象的依赖关系!

    2.1 Spring框架

    2.1专业术语了解

    组件/框架设计

    侵入式设计(移除有影响)

    引入了框架,对现有的类的结构有影响;即需要实现或继承某些特定类。

     

    非侵入式设计(不用的时候直接可以移除,对代码没有影响)

    引入了框架,对现有的类结构没有影响。

    例如:Hibernate框架/ Spring框架

    控制反转:

    Inversion on Control ,控制反转IOC

    对象的创建交给外部容器完成,这个就做控制反转.

    依赖注入,dependency injection

    处理对象的依赖关系

    区别

    控制反转,解决对象创建的问题【对象创建交给别人】

    依赖注入

    在创建完对象后,对象的关系的处理就是依赖注入【通过set方法依赖注入】

    AOP

    面向切面编程。切面,简单来说来可以理解为一个类,由很多重复代码形成的类。

    切面举例:事务、日志、权限;

    2.2 Spring框架

    a.概述(6大模块功能)

    Spring框架,可以解决对象创建以及对象之间依赖关系的一种框架。

    且可以和其他框架一起使用;Spring与Struts,  Spring与hibernate

    (起到整合(粘合)作用的一个框架)

    Spring提供了一站式解决方案:

    1)Spring Core  spring的核心功能:IOC容器,解决对象创建及依赖关系

    2)Spring Web  Spring对web模块的支持。

    -à可以与struts整合,让struts的action创建交给spring

    -àspring mvc模式

    3)Spring DAO  Spring对jdbc操作的支持  【JdbcTemplate模板工具类】

    4)Spring ORM  spring对orm的支持:

    à既可以与hibernate整合,【session】

    à也可以使用spring的对hibernate操作的封装

    5)Spring AOP切面编程

    6)SpringEE   spring对javaEE其他模块的支持

    b.开发步骤

    1) 源码, jar文件:spring-framework-3.2.5.RELEASE

    commons-logging-1.1.3.jar日志

    spring-beans-3.2.5.RELEASE.jarbean节点

    spring-context-3.2.5.RELEASE.jarspring上下文节点

    spring-core-3.2.5.RELEASE.jarspring核心功能

    spring-expression-3.2.5.RELEASE.jarspring表达式相关表

    以上是必须引入的5个jar文件,在项目中可以用户库管理!

    约束参考 :spring-framework-3.2.5.RELEASE\docs\spring-framework-reference\htmlsingle\index.html

    IOC容器的配置: 要创建的所有的对象都配置在这里

    <bean id="user" class="bao.User" init-method="init_user" destroy-method="destroy_user" scope="singleton" lazy-init="false">

    // 现在,把对象的创建交给spring的IOC容器

    第一种获取配置文件

    1.Resource resource = new ClassPathResource("包/applicationContext.xml");

    // 创建容器对象(Bean的工厂), IOC容器 = 工厂类 + applicationContext.xml

    BeanFactory factory = new XmlBeanFactory(resource);

    // 得到容器创建的对象

    User user = (User) factory.getBean("user");

    第二种://2. (方便)直接得到IOC容器对象

    // 得到IOC容器对象

    ApplicationContext ac = new ClassPathXmlApplicationContext("包/applicationContext.xml");

    // 从容器中获取bean

    这样创建的对象是一个对象,默认是单例

    User user = (User) ac.getBean("user");

    2.3. bean对象创建的细节

    1)对象创建: 单例/多例

    *scope="singleton",默认值, 即 默认是单例【service/dao/工具类】

    *  scope="prototype",多例;【Action对象】

    2)什么时候创建?

    *scope="prototype"在用到对象的时候,才创建对象。

    *    scope="singleton"在启动(容器初始化之前), 就已经创建了bean,且整个应用只有

    3)是否延迟创建

    *lazy-init="false"默认为false,不延迟创建,即在启动时候就创建对象

    *lazy-init="true"延迟初始化, 在用到对象的时候才创建对象 

    (只对单例有效)

    创建对象之后,初始化/销毁

    *init-method="init_user"【对应对象的init_user方法,在对象创建之后执行 】

    *    destroy-method="destroy_user"【在调用容器对象的destriy方法时候执行】

    2.4. SpringIOC容器

    SpringIOC容器,是spring核心内容。

    作用:创建对象&处理对象的依赖关系

    创建对象,有几种方式:

    1) 调用无参数构造器

    2) 带参数构造器

    3) 工厂创建对象

    工厂类,静态方法创建对象

    工厂类,非静态方法创建对象

    1.默认无参数构造器

    <bean id="user1" class="bao.Use></bean>

    2.带参数构造器

    constructor-arg 构造器参数

    ref 引用

    3.3.工厂类创建对象         工厂类,实例方法

    先创建工厂

    bean    id="factory"  class="包.ObjectFactory"

    在创建user对象,用factory方的实例方法

    bean  id="user4"  factory-bean="factory"   factory-method="getInstance

    静态工厂

    class指定的就是工厂类型

    factory-method一定是工厂里面的“静态方法”

    bean   id="user"class="bao"   factory-method="getStaticInstance"

    对象写法:问题:spring配置文件中,bean节点的id与name属性的区别?

    id 不能有特殊符号,且唯一,且不能以数字开始      name可以有特殊符号

    2) 对象依赖关系

    Spring中,如何给对象的属性赋值?【DI,依赖注入】

    1)通过构造函数

    2)通过set方法给属性注入值

    3) p名称空间

    4)自动装配(了解)

    5)注解

    1.#  (常用)Set方法注入值

    property

    3.给对象属性注入值:

    # p名称空间给对象的属性注入值

    (spring3.0以上版本才支持)

    4.根据名称自动装配:autowire="byName"

    default-autowire="byName">根据名称自动装配(全局)

    5.注解方式可以简化spring的IOC容器的配置!

    使用注解步骤:

    1)先引入context名称空间

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

    2)开启注解扫描

    3)使用注解

    通过注解的方式,把对象加入ioc容器。

    创建对象以及处理对象依赖关系,相关的注解:

    @Component指定把一个对象加入IOC容器

    @Repository作用同@Component;在持久层使用

    @Service作用同@Component;在业务逻辑层使用

    @Controller作用同@Component;在控制层使用

    @Resource属性注入

    总结:

    1) 使用注解,可以简化配置,且可以把对象加入IOC容器,及处理依赖关系(DI)

    2) 注解可以和XML配置一起使用。

    详细的查看本地

    相关文章

      网友评论

          本文标题:Spring

          本文链接:https://www.haomeiwen.com/subject/cgudqxtx.html