一、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(); }}