spring知识点
1、spring 的概念
spring是一个轻量级的控制反转(ioc)和面向切面编程(aop)的容器框架
轻量级:spring 的大小和开销都是轻量的
非入侵:在程序开发中,不需要引入spring 的包
控制反转(ioc):把对象的创建的权利交给容器
面向切面编程(aop):基于代理的 可以将核心业务和系统服务分隔开
2、spring的入门
2.1、认识一下spring的jar包
spring核心配置文件和核心类
applicationContext.xml (Spring核心配置文件) 作用:用于配置所有的类,这些类叫做springbean
BeanFactory: 容器的工厂类(接口) 作用:用于创建或者获取springbean,即spring管理的对象
ApplicationContext(接口):他是BeanFactory的子类 ,叫做应用上下文对象。用于创建或者获取springbean,功能比BeanFactory更强大。(常用)
BeanFactory和ApplicationContext的区别
BeanFactory:懒加载
ApplicationContext:非懒加载
3、spring IOC
控制反转 Inversion of control :把对象的创建、销毁的权利交给容器框架,由容器来管理对象生命周期。
ioc不是一个新的技术,只是一种新的思想或理念,可以实现“松耦合”
ioc包括依赖注入(DI,核心)和依赖查找
DI:依赖注入 ,就是在实例化对象的时候,由容器来设置这些对象的属性值
spring的注入:
属性的注入:--setter方法注入(见下方<!-- java简单类型的注入 -->)
构造器注入:通过有参构造函数对属性赋值
指定在构造中的参数名称
<bean id="user" class="cn.domain.User">
<constructor-arg value="44" name="age"/>
<constructor-arg value="Jack" name="nm"/>
</bean
注入其他类:通过ref引入其他类的id
<!-- 声明UserController -->
<bean id="userController" class="com.hpe.controller.UserController">
<!-- 注入userService -->
<property name="userService" ref="userService"></property>
</bean>
4、Bean的装配方式
4.1、基于XML文件的装配
注意以下两点: 1、Bean类必须提供一个默认的无参构造方法
2、Bean类必须为需要注入的属性提供对应的setter方法。
4.2、基于注解的装配
一些实例(便于对知识点的理解):
applicationContext.xml的头信息(用的时候copy,不用背)
<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">
applicationContext.xml的内部配置信息:
<!-- 配置的第一个springbean
以下配置就相当于 Person person = new Person();
scope:作用域,默认是单例的 singleton
singleton:单例的,默认的
prototype:原型模式。每次到spring中获取对象的时候都会获取到新的实例
request:同一个请求中是一个单例。不同请求不同单例
session:同一个会话是一个实例
-->
<bean id="person" class="cn.bean.Person" scope="prototype">
<property name="name" value="zhangsan"></property>
</bean>
<!-- java简单类型的注入 -->
<bean id="user" class="cn.bean.User">
<property name="age" value="23"></property>
<property name="name" value="jack"></property>
<!-- 给list类型注入 -->
<property name="list">
<list>
<value>1111</value>
<value>2222</value>
<value>3333</value>
</list>
</property>
<!-- map属性注入 -->
<property name="map">
<map>
<entry key="name" value="rose"></entry>
<entry key="addr" value="USA"></entry>
</map>
</property>
<!-- 注入其他类 使用ref指向其他的bean-->
<property name="person" ref="person"></property>
</bean>
从spring中获取对象的方法:
//1、加载spring的运行环境,初始化并且创建对象
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
//2、从容器中获取对象 person 指的是bean的id
Person p = (Person) app.getBean("person");

浙公网安备 33010602011771号