Spring基础知识,Spring概念,(IOC,DI),工厂模式,Spring配置详解,如何使用Spring创建一个对象,Spring分模块配置

Spring介绍

框架的作用

Spring的优势

(1)Spring是一站式框架,因为Spring框架的性质是属于容器性质,容器中装了什么对象就有什么功能,所以可以一站式。

(2)不仅不排斥其他框架、还能其他框架帮忙管理对象。

(3)AOP支持

(4)基于IOC思想

(5)Spring jdbc

(6)aop 事务

(7)Junit测试支持。

Spring概念

1.Spring思想

IOC:Inverse of control 反转控制

将我们创建对象的方式反转了。

         以前对象的创建由我们开发人员自己维护,包括依赖关系也是我们自己注入的

         使用Spring之后,对象的创建以及依赖关系可以由Spring完成创建以及注入

         反转控制:就是反转了对象创建的方式,从我们自己创建转交给了程序(Spring)创建

DI:Dependency Injection 依赖注入

实现IOC实现需要DI做支持

注入方式:

                   Set 方法注入

                   构造方法注入

                   字段注入

注入的类型:

                   值类型注入: 8大基本数据类型

                   应用类型注入:将依赖对象注入

2.Spring中工厂(容器)

工厂factory

设计模式,提供的方法一般是静态的,

帮我们生产出对象的。

了解ApplicationContext和BeanFactory

BeanFactory接口:

Spring原始接口,针对原始接口的实现类功能较为单一

BeanFactory接口实现类 的容器,特点:每次在获取对象的时候才会创建对象

ApplicationContext接口:

容器在创建的时候,容器里面配置的所有对象会被创建,并且提供更多的功能。

有2个实现类:

ClassPathXmlApplicationContext    //从类路径加载配置文件

new ClassPathXmlApplicationContext( "applicationContext.xml" );

FileSystemXmlApplicationContext    //从硬盘绝对路径中加载配置文件

new FileSystemXmlApplicationContext(“d:/xxx/yyy/zzz”)

总结:

在web开发中,使用ApplicationContext,在资源亏匮乏的环境下可以使用BeanFactory。

BeanFactory可以理解为时间换取空间,ApplicationContext可以理解为空间换取时间

Spring配置详解

Spring案例链接

Bean

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

    <!--将User对象交给Spring管理-->
    <!--
        bean元素:使用该元素的描述需要spring管理的对象
             class属性:被管理对象的全路径(完整类名)
             name属性:被管理的对象起个名字,获取该对象时根据该名称获取对象
                       可以重复,可以使用特殊字符
             id属性:和name属性一样
                      不可重复,不能使用特殊字符
             总结:尽量使用name
     -->
    <bean name="user"            
          class="com.demo.User"        
          init-method="init"            //init-method方法在初始化对象时调用地方法
          destroy-method="destroy"></bean>    //destory-method 在对象消亡时调用的方法

</beans>

Scope属性

Prototype:多例原型

被他标识的对象为多例对象,每次获取的时候都创建一个新的对象,

对于线程不安全的对象,往往使用Prototype。

  <bean name="user1"  scope="prototype"
          class="com.hyx.a_helloworld.User"></bean>

Singleton:单例(默认值)

被他标识的对象为单例对象,每次获取的时候都创建对象都是同一个

 <bean name="user"  scope="singleton"
          class="com.hyx.a_helloworld.User"></bean>

Request

Web环境下,对象与Request生命周期一致

Session

Web环境下,对象与Session生命周期一致

生命周期

init-method:指定初始化方法,spring在对象创建之后立即调用

destroy-method:指定摧毁方法,spring容器在关闭的时候 会销毁所有容器中的 对象之前调用

User类中


        public void init(){
            System.out.println("init.......");
        }
        public void destroy(){
            System.out.println("destroy.......");
        }

 

 <bean name="user2"  
          scope="singleton" 
          init-method="init"
          destroy-method="destroy"
          class="com.hyx.a_helloworld.User"></bean>

 此处,destory并没有执行,是因为程序的运行速度大于对象消亡时间,

也就是在对象消亡时,程序已经跑完了,此刻对象还没有消亡

 

Spring创建对象的方式

无参的构造方法的方式

为User类中添加一个无参构造方法,并在其中输出字符串

<bean name="user3" class="com.hyx.a_helloworld.User"></bean>

 

静态工厂实例化 的方式

<bean name="user4"
          factory-method="getUserFactory"
          class="com.hyx.a_helloworld.User"></bean>

User

public static User getUserFactory(){
        System.out.println("我是工厂");
        return new User();
    }

实例工厂实例化 方法

总结

理解空间换时间,ApplicationContext,使用该接口,在读取.xml文件时,会将所有的bean的对象全部先创建

使用时直接去拿,所有有多少个bean,对应的实体类的构造方法就会执行多少遍

Spring的分模块配置

将不同的模块配置放到不同的配置文件中。

每个配置文件都需要导入对应约束

ApplicationContext.xml

         applicationContext-Dao.xml:所有DAO对象配置

         applicationContext-Service.xml:所有Service对象配置

 <import resource="applicationContext.xml"></import>

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无名一小卒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值