一、初学SpringMVC+Mybatis之Spring简介

1、什么是Spring

Spring是一个开源的轻量级的应用开发框架,目的是为了简化企业级编程。

Spring 提供了IOC和AOP的功能,能够管理各个bean对象之间的关系,可以将组建的耦合度降低,便于日后的维护和升级,实现各个模块的组件化编程。


2、Spring容器

Spring容器相当于创建Bean的抽象工厂。

在Spring中,任何的Java和JavaBean都被当成Bean处理,这是bean都交给Spring容器管理和使用。


3、如何创建Spring容器

Spring容器有BeanFactory和ApplicationContext两种类型,ApplicationContext继承自BeanFactory接口,拥有更多的企业级方法。本质上来讲,BeanFactoryApplicationContext仅仅是维护bean组件的高级工厂接口。

实例化方法如下:

/**
 * applicationContext.xml Spring容器管理bean的配置文件
 */
String conf = "applicationContext.xml";
ApplicationContext ac = newClassPathXmlApplicationContext(conf);

可以把conf配置文件放在src源文件夹下,也可以放在一个指定的包中。


4、Spring容器的使用

通过ApplicationContext的对象ac我们可以获取在Applicationbean.xml中配置好的Bean。

首先,我们要在容器中添加已创建的bean,把我们的对象交给容器去管理。Bean的定义方式:

package pers.zky.entity;

import java.io.Serializable;

/**
 * @author Zky
 * 创建一个Book 类的Bean
 */
public class Book implements Serializable{
    private String id;
    private String name;
    public Book() {
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;	
    }
    public void setName(String name) {
        this.name = name;
    }	
}

然后在application中添加bean:

<bean id="book" class="pers.zky.entity.Book"></bean>

接下来由ac对象调用getBean()方法获取Bean实例:

Student stu = ac.getBean("student",Student.class);

当然,自定义的bean可以交给Spring管理,Java自带的类也可以交给Spring管理。

xml:
<bean id="cal" class="java.util.Calendar" factory-method="getInstance"></bean>

java:
Calendar c = ac.getBean("cal",Calendar.class);

5、使用Spring创建bean的方式

1)、通过构造器实例化bean

2)、通过静态工厂方法实例化bean

3)、通过实例工厂方法实例化bean


6、Spring容器中bean的作用域

在application.xml中,修改bean的scope属性,用来指明bean的作用域

1)、sington 单例模式

在整个Spring容器中,使用singleton定义的Bean将只有一个实例。

XML:
<bean id="student" class="pers.zky.entity.Student" scope="singleton"></bean>

java:
Student stu1 = ac.getBean("student",Student.class);
Student stu2 = ac.getBean("student",Student.class);
System.out.println(stu1==stu2);

Console:
true

2)、prototype 原型模式

通过静态工厂方法实例化bean

XML:
<bean id="student" class="pers.zky.entity.Student" scope="prototype"></bean>

java:
Student stu1 = ac.getBean("student",Student.class);
Student stu2 = ac.getBean("student",Student.class);
System.out.println(stu1==stu2);

Console:
false

3)、request

在一次http请求中,一个bean定义对应一个实例,仅限于web环境。

4)、session

在一次http session中,一个bean定义对应一个实例,仅限于web环境。

5)、global session

在一个全局的http session中,一个bean定义对应一个实例,仅限于web环境。仅在基于portlet的web应用中才有意义,Portlet规范定义了全局session的概念。


7、Spring容器中bean的生命周期

指定销毁方法,必须是Singleton模式的bean;并且容器的接受者要变为AbstractApplicationContext才有close方法。

xml:
<bean id="example" class="com.tz.entity.ExampleBean" init-method="init" destroy-method="destroy" lazy-init="true"></bean>

java:
package pers.zky.entity;
import java.io.Serializable;
/**
 * ExampleBean类,测试生命周期
 * */
public class ExampleBean implements Serializable{
    public ExampleBean() {
        System.out.println("无参构造");	
    }
    public void init(){
        System.out.println("初始化");
    }
    public void service(){
        System.out.println("执行");
    }
    public void destroy(){
        System.out.println("销毁");
    }	
}

console:
无参构造
初始化
执行
销毁


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值