spring笔记(一)spring管理bean对象的基本使用

122 阅读3分钟

一、spring是什么

spring是分层的javaSE/javaEE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核。

full-stack:全栈的意思,通常指一栈式开发就是前端+后端,但是在这里是指spring在后端有着展现层springMVC以及持久层springJDBCTemplate以及业务层的事务管理等企业级应用。同时还能整合第三方的框架和类库。

二、spring的入门代码

先导入maven坐标

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.4</version>
</dependency>

第一步配置xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"       
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">    
</beans>

第二步创建目标bean类

//创建接口
public interface UserDao {
    void save();
}
//实现接口
public class UserDaoImpl implements UserDao {
    public void save() {
        System.out.println("save........");    
    }
}

第三步在xml配置文件中配置bean对象

<bean id="userDao" class="com.dao.impl.UserDaoImpl"></bean>

第四步编写一个测试类

import com..dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UserDemo {
    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao = (UserDao) applicationContext.getBean("userDao");
        userDao.save();
    }
}

代码运行结果如下

三、spring配置文件

1、bean标签的基本配置

bean标签用于配置对象交由spring来创建。默认情况下它调用的是类中的无参构造函数如果没有无参构造函数则不能创建成功。

基本属性:

id:Bean实例在spring容器中唯一的标识

class:Bean对象的全限定名

2、bean标签范围配置

scope:指对象的作用范围,取值如下:

  • singleton      默认值单例的

  • prototype     多例的

  • request         WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中 

  • session          WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中 

  • globalsession  WEB 项目中应用在Portlet环境,如果没有Portlet环境那么globalSession 相当于session 

当scope的取值为singleton时

Bean的实例化个数为:1个

Bean的生命周期:

  • 对象创建:当应用加载时,创建容器时,对象就被创建了

  • 对象运行:只要容器在对象一直活着

  • 对象销毁:当应用卸载,容器销毁时,对象就销毁了

当scope的取值为prototype时

bean的实例化个数:多个

bean的实例化时机:当调用getBean()方法时实例化Bean

对象创建:当使用对象时创建新的对象实例

对象运行:只要对象一直在使用中,就一直活着

对象销毁:对象长时间不用时,被java的垃圾回收器回收了

bean生命周期配置

init-method:指定类中的初始化方法名称

destroy-method:指定类中销毁方法的名称

Bean实例化的三种方式

  • 使用无参构造方法实例化

  • 它会根据默认无参构造方法来创建类对象,如果bean中没有默认无参构造函数,将会创建失败

    id="userDao" class="com.dao.impl.UserDaoImpl"/>

  • 工厂静态方法实例化

  • 工厂的静态方法返回bean实例

    public class StaticFactoryBean { public static UserDao createUserDao(){ return new UserDaoImpl(); } }

  • 工厂实例方法实例化

  • 工厂的非静态方法返回bean实例

    public class DynamicFactoryBean public UserDao createUserDao(){ return new UserDaoImpl(); }}