Spring系列1

1.javaBean规范是什么?

    满足如下规范的类的实例就是javabean对象,
    a.有包并且包中包含类
    b.属性都是私有的
    c.有无参构造方法
    d.有get、set方法
    e.实现序列化接口

2.什么是Spring?

是一个开源的用来简化企业级应用开发的框架

3.Spring的特点有哪些?

a.简化开发
    Spring框架对一些常见的API做了封装,可以减少代码量
b.管理对象
    Spring可以帮我们管理对象之间的依赖关系,使软件更容易维护
c.集成其他框架
    Spring可以集成其他框架,比如Mybatis

4.Spring容器是什么以及如何启动Spring容器?

Spring容器是Spring框架中的一个核心模块,用来管理对象的。

如何启动Spring容器?
a.导包Spring-webmvc
b.添加配置文件Spring配置文件
c.启动容器
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
ApplicationContext是一个接口,ClassPathXmlApplicationContext是该接口的一个实现类;

如何创建对象?
a.无参构造器方法
Student stu=ac.getBean("stu",Student.class);
配置文件中代码:
<bean id="stu" class="first.Student"></bean>
b.静态工厂方法
c.实例工厂方法

实例对象的作用域:
默认情况下,作用域为单例singleton,只会创建单个实例,当作用域为原型prototype时会创建多个实例,通过scope属性来设h置作用域

配置文件中代码如下

<bean id="stu" class="first.Student" scope="prototype"></bean>

实例对象生命周期相关的两个方法:
init-method:指定初始化方法
destroy-method:指定销毁方法,只有作用域为单例的bean销毁方法才有效
配置文件中代码如下:

<bean id="stu" class="first.Student" init-method="init" destroy-method="destroy"></bean>

实体类中代码如下:

public class Student{
    public void init(){
        System.out.println("初始化方法");
    }
    public void study(){
        System.out.println("学习");
    }
    public void destroy(){
        System.out.println("销毁方法");
    }
}

延迟加载:
默认情况下,容器启动之后会将作用域为单例的bean创建好;而延迟加载后,容器启动之后不会创建bean,只有通过getBean方法后才会创建bean。(可以提高效率)
通过lazy-init属性设置是否延迟加载,为true时表示延迟加载
配置文件中代码:

<bean id="stu" class="first.Student" lazy-init="true"></bean>

5.什么是IOC和DI?

IOC:控制反转,对象之间的依赖关系交给容器来管理(目标)
DI:依赖注入,容器通过依赖注入的方式来建立对象之间的依赖关系(手段)
DI有set注入或者构造器注入

set注入:
step1.在相应的实体类中提供set方法
step2.在配置文件中通过property元素来配置要注入的对象name:指定属性名
ref:指定要注入的属性值,即要注入的bean对象的id
配置文件中的代码如下:

<bean id="a" class="ioc.A"></bean>
<bean id="b" class="ioc.B">
/*在b类中要有属性A1的set方法,将id=a的bean通过set方法的参数传入*/
    <property name="a1" ref="a">
</bean>

b类中的代码如下:

public class B{
    private A a1;
    public B(){
    }
    public void setA1(A a1){
        this.a1=a1;
    }
    public void service(){
        //调用a1的f方法
        a1.f();
    }
}

构造器注入:

constructor-arg元素表示构造器注入
index,表示构造器的参数下表,从0开始,
ref表示要注入的bean的id值

配置文件中代码如下:

<bean id="a" class="ioc.A"></bean>
<bean id="b" class="ioc.B">
    <constructor-arg index="0" ref="a"/>
</bean>

实体类的代码就是有构造器既可,此处省略

自动装配:
默认情况下容器不会自动装配,可以通过outowire属性让容器依据某些规则来注入相应对象。outowire的属性值有3个
byName
byType
constructor

注入基本类型

注入集合类型

以引用的方式注入集合类型

6.使用注解简化配置

如果类的前面加了特定的注解(比如@Component),那么容器就会将这个类纳入容器进行管理(相当于配置了一个bean,其中bean的id默认就是首字母小写之后的类名,也可以在注解后面的括号中自己定义bean的id)

组件扫面:容器会扫描指定包及其子包下面的所有类

@Component("be1")//指定bean的id为be1
@Scope("singleton")//指定作用域为单例
@Lazy(true)        //指定延迟加载
public class Test{}

方法上面也可以加注解

@PostConstruct//指定初始化方法
public void init(){}

@PreDestroy//指定销毁方法
public void destroy(){}

配置文件中通过component-scan来配置组件扫描:

<context:component-scan base-package="annotation"/>//指定要扫描的包

依赖注入相关2组注解:
支持set方式注入和构造器方式注入

@AutowiredQualifier

set方式注入,实体类中代码如下:

@Autowired
public void setWt(@Qualifier("wt") Waiter wt){
    System.out.println();
        this.wt=wt;
    }
或者
@Autowired
@Qualifier("wt")
private Waiter wt;

构造器方式注入,配置文件中代码如下:
@Autowired

    public Manager(@Qualifier("wt") waitere wt){
        this.wt=wt;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值