Spring学习笔记
框架的概念:
Core Container(IOC)核心容器包含Bean Core Context expression 这几个容器
Web:Sping开发Web应用
- WebSocket
- Servlet
- web protlet
(建议用哪个模块就导哪个包)
IOC:
控制反转;被动式的资源获取方式:资源的获取不是自己创建,而是交给容器创建和设置
DI:(Injevtion 依赖注入)
- 容器能知道哪个组件(类运行的时候时候需要另外一个类)
- 只要使用管理的组件,都能使用组件提供的强大功能。现在所有的对象交给容器创建,容器中的组件注册。
1 | <bean id = "person03" class="com.bean.Person"> |
Spring在为各种属性赋值:
- 在bean使用ref写是引用外部bean, 在property里面写bean是引用内部bean
- 在对list属性进行赋值,写在property里面,同时也可以使用ref引用外部赋值
- 在对map属性进行赋值,在property键值对里面
<entry>
标签,在标签内使用key value进行键值对的赋值。 - util名称空间创建集合类型的bean 方便别人引用
1
2
3<util:map id="myMap">//一定要有Id
//里面写的直接是元素
</util:map>
级联属性赋值:就是属性的属性
通过继承实现bean配置信息的重用
1 | <bean id="parent05" class="com.bean.Person"> |
bean之间的依赖(只是改变创建顺序)如果在创建之前写入 depends-on=‘book,person“,那么就会先创建book 还有person。
通过静态工厂方法创建bean,实例工厂方法创建bean
bean的创建默认就是框架利用反射new出来的bean实例,工厂模式就是有一个类帮你去创建对象
- 静态工厂:工厂本身不用创建对象:通过静态方法调用 对象 = 工厂类.工厂方法名()
- 实例工厂:工厂本身需要创建对象:
工厂类 工厂对象 = new 工厂类();
工厂对象.getAirplane1
2
3factory-method:指定工厂方法
class:指定静态工厂全类名
<constructor-arg value="李四"></constructor-arg>传参实例工厂
- 先配出实例工厂对象
- 配置我们需要创建的airPlane使用哪个工厂创建
- facotry-bean :指定使用哪个工厂实例
- factory-method:使用哪个工厂方法
FactoryBean(是Spring规定的一个接口);只要是这个接口的实现类,Spring都认为是一个工厂,ioc容器启动的时候就不会创建实例
bean的生命周期
ioc容器中注册的bean:
- 单例bean ,容器启动的时候才会创建好,容器关闭也会销毁创建的bean
- 多例bean,获取的时候才会创建
引用外部属性文件:
- 数据库连接池作为单实例是最好的,一个项目就一个连接池,连接池里面管理很多连接。连接直接从连接里拿,可以让spring 帮我们创建连接池对象。
- 依赖context名称空间,可以加载外部配置文件
自动装配(自动赋值)
- autowire= “default” ,可以填byName ,byType, constructor,no。
- 例如说byName,按照名字,以属性名作为id去容器里找到这个组件,给他赋值。如果找不到就装配null
Spring有四种注解:
- @Controller 控制器
- @Service 业务逻辑
- @Respository 数据库(持久化层)
- @Component
注意:某个类上添加任何一个注解都能快速的将这个组件加入ioc容器的管理
添加步骤:
- 加入注释:告诉Spring,自动扫描加注释,依赖名称空间 –context:component-scan
base.package:” “填入需要扫描的包,至少填两级目录 - 在ioc获取bean的过程中,id是默认是类名的首字母小写, 也可以在注释后加入()来修改名字