Spring

1、Spring是什么?特点是什么?优势是什么?

spring:

1.是一个高度灵活的轻量级的开源框架,其目的是减低企业级应用开发的复杂度。

2.是一个容器,因为它包含并且管理应用对象的生命周期和配置。如对象的创建、销毁、回调等

特点

1.轻量级:低侵入式设计,代码污染极低,非侵入性;

2.框架:可以集成mybatis,hibernate等框架;

3.控制反转(IOC):通过控制反转实现解耦,大大降低代码量;

4.面向切面编程(AOP):在事务处理、日志管理、缺陷控制、异常处理这些板块有明显的优势

5.事务管理:Spring提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务

6.高度并发性,并不强制应用完全依赖spring。

7.独立性:独立于各种应用服务器;

8.容器提供单例模式的支持;

优点:

1、提供了一种管理对象的方法、可以把中间层对象有效的组织起来。一个完美的框架"粘合剂";

2、采用了分层结构,可以增量引入到项目中去;

2、耦合是什么意思

既然spring中的优点之中有解耦的特点,只有知道耦合才可以进行相应的解耦;

在开发中,可能会写很多的类,而有些类之间不可避免的产生依赖关系,这种依赖关系称之为耦合。有些依赖关系是必须的,有些依赖关系可以通过优化代码来解除的。

3.Spring的核心是什么?

1.控制反转(IOC):传统的JAVA开发模式中,当需要一个对象时,我们使用new活着getInstance等直接或者间接调用构造方法创建一个对象,而在Spring开发模式中,Spring容器使用工厂模式为我们创建了所需要的对象,不需要我们自己去创建了,直接调用Spring提供的对象就可以了,这就是控制反转。

2.面向切面编程(AOP):在面向对象编程(OOP)中,我们将事务纵向抽成一个个的对象,而在面向切面编程中,我们将一个个的对象某些类似的方面横向抽成一个切面,对这个切面进行一些如权限控制,事务管理,日志记录等公用操作处理的过程,就是面向切面编程的思想。

4.IOC什么含义

Inversion of Control:控制权的转移,创建对象的权利由应用程序转移到容器称为控制反转。

Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。

5.DI是什么?和IOC有什么区别 ?

依赖注入(Dependecy Injection DI)和控制反转(Inversion of Control IOC)是同一个概念,具体的讲:当某个角色 
需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中 
创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者 
因此也称为依赖注入。 
spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。

6.注入属性的方式

注入属性的方式有两种setter构造方法注入

实体类:

@Getter
@Setter
public class Man {
    private String userCar;
    private Integer age;
    private String manName;
}

构造(关键字property)

  <bean id="man" class="com.openlab.pojo.Man" >
        <property name="age" value="25"></property>
        <property name="manName" value="张三"></property>
        <property name="userCar" value="宾利"></property>
    </bean>

setter注入(关键字)

实体类

@Getter
@Setter

public class Man {
    private String userCar;
    private Integer age;
    private String manName;

    public Man(String userCar, Integer age, String manName) {
        this.userCar = userCar;
        this.age = age;
        this.manName = manName;
    }
}

xml文件

<bean id="man" class="com.openlab.pojo.Man" >
        <constructor-arg name="age" value="5"></constructor-arg>
        <constructor-arg name="manName" value="张三"></constructor-arg>
        <constructor-arg name="userCar" value="宾利"></constructor-arg>
    </bean>

7.​如何注入集合属性

xml文件

<bean id="testList" class="com.openlab.pojo.testList">
        <property name="inte">
            <list>
                <value>1</value>
                <value>2</value>
                <value>3</value>
            </list>
        </property>
        <property name="man">
            <list>
                <ref bean="man"></ref>
                <ref bean="man"></ref>
                <ref bean="man"></ref>
            </list>
        </property>
        <property name="testTset">
            <set>
                <value>5</value>
                <value>7</value>
                <value>8</value>
            </set>
        </property>
        <property name="testMap">
            <map>
                <entry key="ss" value="aa"></entry>
                <entry key="qq" value="ff"></entry>
                <entry key="vv" value="kk"></entry>
            </map>
        </property>
    </bean>

实体类

import java.util.List;
import java.util.Map;
import java.util.Set;

@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class testList {
    private List<Integer> inte;
    private List<Man> man;
    private Set testTset;
    private Map<String,String> testMap;
}

8.spring管理bean的作用域

 

9.Spring管理bean的生命周期:

1:调用无参方法

2:set方法调用

3:init()方法前被调用

4:init()方法被调用

5:init()方法后被调用

6:对象可以正常使用

6:destroy()方法被调用

10.bean中的两种方式

 单例:关键字:

scope="singleton"

<bean id="man" class="com.openlab.pojo.Man" scope="singleton">
        <constructor-arg name="age" value="5"></constructor-arg>
        <constructor-arg name="manName" value="张三"></constructor-arg>
        <constructor-arg name="userCar" value="宾利"></constructor-arg>
    </bean>

非单例:关键字:

scope="prototype"
<bean id="man" class="com.openlab.pojo.Man" scope="singleton">
        <constructor-arg name="age" value="5"></constructor-arg>
        <constructor-arg name="manName" value="张三"></constructor-arg>
        <constructor-arg name="userCar" value="宾利"></constructor-arg>
    </bean>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值