spring原理
1.spring特点
-
spring是轻量的,非入侵的,spring应用的对象不依赖Spring的特定类
-
spring的控制反转,低耦合,
-
面向切面
-
容器:spring包含管理应用对象的配置和生命周期
-
框架
2.spring常用模块
-
核心容器:提供spring框架基本功能,BeanFactory为主要核心容器,使用控制反转将应用程序的配置与实际代码分开.
-
spring上下文为配置文件
-
SpringAop
-
springDAO
-
springORM
-
springweb模块
-
springMVC框架
3.springIOC原理(控制反转)
-
springioc为一种设计思想:spring容器控制了对象的创建和外部资源的获取,由容器进行注入组合对象.
-
spring根据应用程序的Bean配置信息,在spring容器中生成相应的Bean配置注册表,根据注册表实例化Bean
4.spring Bean的作用域
-
Spring 3 中为 Bean 定义了 5 中作用域,分别为 singleton(单例)、prototype(原型)、 request、session 和 global session
5.spring Bean的生命周期
-
实例化Bean,(new)
-
属性赋值
-
初始化
-
销毁
6.spring依赖注入四种方式
-
构造器注入
/*带参数,方便利用构造器进行注入*/ public CatDaoImpl(String message){ this. message = message; } <bean id="CatDaoImpl" class="com.CatDaoImpl"> <constructor-arg value=" message "></constructor-arg> </bean>
-
setter方法注入
public class Id { private int id; public int getId() { return id; } public void setId(int id) { this.id = id; } } <bean id="id" class="com.id "> <property name="id" value="123"></property> </bean>
-
静态工厂注入
public class DaoFactory { //静态工厂 public static final FactoryDao getStaticFactoryDaoImpl(){ return new StaticFacotryDaoImpl(); } } public class SpringAction { private FactoryDao staticFactoryDao; //注入对象 //注入对象的 set 方法 public void setStaticFactoryDao(FactoryDao staticFactoryDao) { this.staticFactoryDao = staticFactoryDao; } } //factory-method="getStaticFactoryDaoImpl"指定调用哪个工厂方法 <bean name="springAction" class=" SpringAction" > <!--使用静态工厂的方法注入对象,对应下面的配置文件--> <property name="staticFactoryDao" ref="staticFactoryDao"></property> </bean> <!--此处获取对象的方式是从工厂类中获取静态方法--> <bean name="staticFactoryDao" class="DaoFactory" factory-method="getStaticFactoryDaoImpl"></bean>
-
实例工厂
public class DaoFactory { //实例工厂 public FactoryDao getFactoryDaoImpl(){ return new FactoryDaoImpl(); } } public class SpringAction { private FactoryDao factoryDao; //注入对象 public void setFactoryDao(FactoryDao factoryDao) { this.factoryDao = factoryDao; } } <bean name="springAction" class="SpringAction"> <!--使用实例工厂的方法注入对象,对应下面的配置文件--> <property name="factoryDao" ref="factoryDao"></property> </bean> <!--此处获取对象的方式是从工厂类中获取实例方法--> <bean name="daoFactory" class="com.DaoFactory"></bean> <bean name="factoryDao" factory-bean="daoFactory" factory-method="getFactoryDaoImpl"></bean>