Spring第一章笔记

Spring第一章笔记

第一步:

配置pom文件导入依赖

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>


        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
        </dependency>
    </dependencies>

会生成jar包

第二步:

创建类(如Dog,Man类)
要有构造方法,空的构造方法,get set方法和toString方法
在Man实体类中加入Dog属性 ,并点出get set 方法

第三步:

在resources资源文件夹中新建一个xml文件,选择XML Configuration file --> Spring Config(带有绿叶的标志),文件夹名一般写为applicationContext.xml

ContextLoaderListener是一个ServletContextListener, 它在你的web应用启动的时候初始化。缺省情况下, 它会在WEB-INF/applicationContext.xml文件找Spring的配置。 你可以通过定义一个<context-param>元素名字为”contextConfigLocation”来改变Spring配置文件的位置。
例如:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

在xml文件中:

点击右上角的一行configure application context -->点击ok

1.创建对象:

<bean id="d1" class="com.swjd.bean.Dog">
        <property name="id" value="1"></property>
        <property name="name" value="小黑"></property>
        <property name="sex" value="公"></property>
    </bean>

2 依赖注入

2.1 第一种依赖注入方法:set注入

<bean id="m1" class="com.swjd.bean.Man">
        <property name="id" value="1"></property>
        <property name="name" value="刘德华"></property>
        <property name="age" value="48"></property>
        <!--<property name="dog" ref="d1"></property>-->
        <property name="dog">
            <ref bean="d1"></ref>
        </property>
    </bean>

2.2 第二种依赖注入方法:调用带参的构造方法注入

<bean id="m2" class="com.swjd.bean.Man">
       <constructor-arg index="0" type="int" value="2"></constructor-arg>
        <constructor-arg index="1" type="java.lang.String" value="圆圆"></constructor-arg>
        <constructor-arg index="2" type="int" value="2"></constructor-arg>
        <!--注入Dog-->
        <constructor-arg index="3" type="com.swjd.bean.Dog" ref="d1"></constructor-arg>
    </bean>

2.3 第三种依赖注入方法:p命名空间注入

<bean id="m3" class="com.swjd.bean.Man" p:id="3" p:name="小小" p:age="19" p:dog-ref="d1"></bean>

2.4 第四种依赖注入方法:Spel表达式注入

<bean id="m4" class="com.swjd.bean.Man">
        <property name="id" value="#{m1.id}"></property>
        <property name="name" value="#{m2.name}"></property>
        <property name="age" value="#{m3.age}"></property>
        <property name="dog" ref="d1"></property>
    </bean>

2.5 有注入方式:数组、集合(list、map、set)、properties等

例如:在Student实体类中注入
–实体类:

private String[] hobbies;//爱好
    private List<String> subject;//科目
    private Map<String,Object> map;

–xml文件中:

<bean id="s1" class="com.swjd.bean.Student">
        <property name="name" value="小小"></property>
        <property name="hobbies">
            <!--注入数组-->
            <array>
                <value>小说</value>
                <value>漫画</value>
                <value>游戏</value>
                <value>古风</value>
            </array>
        </property>
        <property name="subject">
            <!--注入集合-->
            <list>
                <value>Spring</value>
                <value>MyBatis</value>
            </list>
        </property>
        <property name="map">
            <!--注入集合-->
            <map>
                <entry key="CN">
                    <value>中国</value>
                </entry>
                <entry key="RU">
                    <value>俄罗斯</value>
                </entry>
            </map>
        </property>
    </bean>

3 测试

3.1 在mian方法中启动Spring容器

		ClassPathXmlApplicationContext context=
                new ClassPathXmlApplicationContext("applicationContext.xml");

3.2 测试语句(打印在控制台)

		System.out.println(context.getBean("m1", Man.class));
        System.out.println(context.getBean("m2", Man.class));
        System.out.println(context.getBean("m3", Man.class));
        System.out.println(context.getBean("m4", Man.class));
        System.out.println(context.getBean("s1",Student.class));

关于spring框架:Spring 框架是一个分层架构

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
在这篇由三部分组成的 Spring 系列 的第 1 部分中,我将介绍 Spring 框架。我先从框架底层模型的角度描述该框架的功能,然后将讨论两个最有趣的模块:Spring 面向方面编程(AOP)和控制反转 (IOC) 容器。接着将使用几个示例演示 IOC 容器在典型应用程序用例场景中的应用情况。这些示例还将成为本系列后面部分进行的展开式讨论的基础,在本文的后面部分,将介绍 Spring 框架通过 Spring AOP 实现 AOP 构造的方式。

面向切面编程(AOP)和控制反转 (IOC) 容器

IOC 和 AOP
控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 (在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。
在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法。下表列出了 IOC 的一个实现模式。

类型 1 服务需要实现专门的接口,通过接口,由对象提供这些服务,可以从对象查询依赖性(例如,需要的附加服务) 类型 2 通过
JavaBean 的属性(例如 setter 方法)分配依赖性 类型 3 依赖性以构造函数的形式提供,不以 JavaBean 属性的形式公开
Spring 框架的 IOC 容器采用类型 2 和类型3 实现。

面向方面的编程 面向方面的编程,即
AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP
的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。

AOP 和 IOC
是补充性的技术,它们都运用模块化方式解决企业应用程序开发中的复杂问题。在典型的面向对象开发方式中,可能要将日志记录语句放在所有方法和
Java 类中才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优势就是
Java 类不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用 Spring AOP 编写的应用程序代码是松散耦合的。

AOP 的功能完全集成到了 Spring 事务管理、日志和其他各种特性的上下文中。

IOC 容器 Spring 设计的核心是 org.springframework.beans 包,它的设计目标是与 JavaBean
组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的底层中介。下一个最高级抽象是 BeanFactory
接口,它是工厂设计模式的实现,允许通过名称创建和检索对象。BeanFactory 也可以管理对象之间的关系。

BeanFactory 支持两个对象模型。

单态 模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索。Singleton
是默认的也是最常用的对象模型。对于无状态服务对象很理想。 原型
模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模型最适合。 bean 工厂的概念是 Spring 作为 IOC
容器的基础。IOC 将处理事情的责任从应用程序代码转移到框架。正如我将在下一个示例中演示的那样,Spring 框架使用 JavaBean
属性和配置数据来指出必须设置的依赖关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值