Spring第一章笔记总结

1、Spring是什么?

答:Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。

主要由以下几个模块组成:

Spring Core:核心类库,提供IOC服务;

Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);

Spring AOP:AOP服务;

Spring DAO:对JDBC的抽象,简化了数据访问异常的处理;

Spring ORM:对现有的ORM框架的支持;

Spring Web:提供了基本的面向Web的综合特性,例如多方文件上传;

Spring MVC:提供面向Web应用的Model-View-Controller实现。

2、spring的作用

答:Spring可以解决业务逻辑层和其他各层的耦合问题,也是一个框架的粘合剂,它让面向接口编程思想贯穿了整个系统,特点:高内聚,低耦合,设计层框架!

主要学习spring的以下部分:

1)IOC思想

2)AOP编程

3)声明式事务的支持

4)框架无缝整合其他框架

3、Spring环境搭建?

答:1.右击resource文件:
Spring第一章笔记总结_第1张图片
2.规范命名配置文件

applicationContext.xml

3.建好后,点击右上角黄色线…application context之后点ok创建完毕
Spring第一章笔记总结_第2张图片
4.在里面创建对象
Spring第一章笔记总结_第3张图片
5.用spring框架在测试类调用对象
Spring第一章笔记总结_第4张图片

4、DI是什么?

答:依赖注入,给对象赋属性值,一定要保留空的构造方法和get/set的方法!
Spring第一章笔记总结_第5张图片

5、IOC是什么?

答:控制反转,调用者的实例创建不再由调用者自己创建,而是由spring容器创建,这个过程把实例创建的控制权由应用代码转移到了外部容器,控制权发生了改变。

6、Bean标签里四个属性的作用:

答:1.Name属性:给对象取名,名字可以同时取多个,但是不同的对象不能重复(大名id只能一个,小名name可以多个,但是不可以跟别的小名重复)

2.Scope对象作用域属性:

1)scope = “singleton” 默认值,Spring容器默认创建的对象是单例!

2)scope=“prototype” 创建的对象是多例(每次使用对象的时候额外创建一个新的)

3)scope=“session” 表示在一次会话范围内,Spring容器中的对象保持一个,公用同一个!

4)scope=“request” 表示在一次请求范围内,Spring容器中的对象保持一个,公用同一个

注意:后两个只能用在web项目里

3.对象懒创建(只有在scope = "singleton"才会生效)

lazy-init表示对象的加载时机(true:懒加载(使用对象的时候才创建);false(spring框架一启动就加载))

4.对象创建完成后调用的方法,和对象销毁后调用的方法

init-method=“对象创建完成后调用的方法”

destroy-method=“对象销毁后调用的方法”

7、spring创建对象的四种方式?

答:1)用无参构造方法创建

<!--方式1:无参构造方法创建对象-->
 <bean id="p1" name="person1,person2" class="com.swjd.bean.Person" scope="singleton" lazy-init="true" init-method="init" destroy-method="destroy">
     <property name="id" value="957"></property>
     <property name="name" value="貂蝉"></property>
     <property name="sex" value="女"></property>
  </bean>

2)用带参的构造方法创建对象

<!--方式2:用带参的构造方法创建对象-->
<bean id="p3" class="com.swjd.bean.Person">
    <constructor-arg index="0" type="int" value="9528"></constructor-arg>
    <constructor-arg index="1" type="java.lang.String" value="德玛西亚"></constructor-arg>
    <constructor-arg index="2" type="java.lang.String" value="男"></constructor-arg>
</bean>

3)用静态工厂创建对象

<!--方式3:用静态工厂创建对象-->
<bean id="p4" class="com.swjd.beanfactory.PersonFactory" factory-method="createPerson"></bean>

4)用非静态工厂创建对象

<!--方式四:用非静态工厂创建对象-->
<bean id="noStaticfactory" class="com.swjd.beanfactory.NoStaticPersonFactory"></bean>
<bean id="p5" factory-bean="noStaticfactory" factory-method="createPerson"></bean>

8、ico 的使用

答:1)把创建对象交给了Spring进行管理

2)ioc 操作两部分:

1.ico的配置文件方式

2.ico的注解方式

9、ioc底层原理

答:1)xml配置文件

2)dom4j 解决 xml

3)工厂设计模式

4)反射

10、Spring注入属性

答:1. 构造方法

<!-- 使用有参构造注入属性 -->
<bean id="abc" class="com.bean.User">
    <!-- 
    constructor : 构造器
    arg : 参数
    name="参数名称"
        value="值"
         -->
    <constructor-arg name="uname" value="雷鸣"></constructor>
</bean>

2.set方法(常用)

<!-- 使用set方法注入属性 -->
<bean id="abc" class="com.bean.User">
    <!--
        name="属性名称"
        value="值"
    -->
    <property name="uname" value="雷鸣"></property>
</bean>

11、p名称空间注入

答:用 p: 的属性值 替代 -property-

<bean id="abc" class="com.bean.User" p:uname="luke"></bean>

12、Spring注入复杂数据

答:实体类

public class Person{
    private String[ ] array;
    private List< String > list;
    private Map< String , String > map;
    private Properties Properties;
    /**...省去setter和getter方法...*/
}

xml配置

<!-- bean 省略 -->
<!-- 数组 -->
<property name="array">
    <list>
        <value>雷鸣1</value>
        <value>雷鸣2</value>
        <value>雷鸣3</value>
    </list>
</property>
<!-- list -->
<property name="list">
    <list>
        <value>Class1</value>
        <value>Class2</value>
        <value>Class3</value>
    </list>
</property>
<!-- map -->
<property name="array">
    <map>
        <entry key="key1" value="value1"></entry>       
        <entry key="key2" value="value2"></entry>
        <entry key="key3" value="value3"></entry>
    </map>
</property>
<!-- properties -->
<property name="array">
    <props>
        <prop key="drivareclass">cpm.mysql.jdbc.Driver</prop>
        <prop key="username">root</prop>
    </props>
</property>

你可能感兴趣的:(Spring第一章笔记总结)