spring 入门
一、Spring 简介(http://spring.io)
- spring 是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的容器框架
- 从大小和开销方面都是轻量的。
- 利用IOC降低低耦合度
- 提供AOP支持,
- 包含并管理应用对象的配置和生命周期,容器
- 将简单的组件配置、组合成复杂的应用,框架
-
Core IoC container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP.
Testing Mock objects, TestContext framework, Spring MVC Test, WebTestClient.
Data Access Transactions, DAO support, JDBC, ORM, Marshalling XML.
Web Servlet Spring MVC, WebSocket, SockJS, STOMP messaging.
Web Reactive Spring WebFlux, WebClient, WebSocket.
Integration Remoting, JMS, JCA, JMX, Email, Tasks, Scheduling, Cache.
Languages Kotlin, Groovy, Dynamic languages.
二、IOC(配置、注解)
- 接口及面向接口编程
- 什么是IOC
-
- IOC :控制反转,控制权的转移,应用程序本身并不负责对象的创建和维护,而是由容器本身创建和维护。
-
DI依赖注入 |
- Spring的Bean配置
-
<Beans> <Bean id="" class=""></Bean> </Beans>
- Bean的初始化
- 基础:两个包
-
- org.springframwork.beans
- org.springframwork.context
- BeanFactory提供配置结构,加载并初始化
- ApplicationContext保存Bean对象
-
- 初始化ApplicationContext的方式
-
- 本地文件
-
FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("F:/workspance/appcontext.xm");
-
- ClassPath
-
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-context.xml")
-
- web应用中依赖Servlete和listener
-
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderListener</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
-
- 本地文件
-
- Spring的常用注入方式
- 注入的概念:启动spring 容器加载bean并配置时,完成对变量赋值操作。
- 方式:设值注入和注解
- 设值注入,通过Setter方法
-
<Beans> <Bean id="Service" class="ServiceImpl"> <Property name="DAO" ref="DAO"></Property> </Bean> <Bean id="DAO" class="DAOImpl"></Bean> </Beans>
-
-
构造器注入
-
<Beans> <Bean id="Service" class="ServiceImpl"> <constructor-arg name="DAO" ref="DAO"></constructor-arg> </Bean> <Bean id="DAO" class="DAOImpl"></Bean> </Beans>
- 注解注入
-
三、Bean(配置、注解)
- Bean配置项
- Id
- Class
- Scope
- Constructor argument
- Properties
- Autowiring mode
- lazy-initialization
- Initialization/destory
- Bean的作用域
- singleton:单例,指一个Bean容器中只存一份
- prototype:每次请求(每次使用)创建新的实例
- request:每次http请求创建实例,并在当前request类有效。
- session:同上,在当前session有效。
- global session:
- Bean的生命周期
- 初始化:
- 方式一:配置init-method初始化方法属性
-
1、对于单一Bean的初始化和销毁
<Bean id="Service" class="ServiceImpl" Scope="prototype" init-method="init" destroy-method="stop"> <constructor-arg name="DAO" ref="DAO"></constructor-arg> </Bean>
2、对于多个Bean的初始化和销毁,通过全局<Beans>
<Beans default-init-Method="" default-destory-method=""></Beans>
方式二:3、通过实现接口InitializingBean、DisposableBean接口的afterPropertiesSet()和destory()方法。
- 销毁:配置destory-method销毁方法属性,一般用于资源或连接池的释放
- 注:当Bean配置了自定义的销毁和初始化时,会优先于接口实现、其次是配置,全局的将会被覆盖。
- Bean的自动装配
- 在配置文件<Beans>节点中设置default-Autowire属性值,包括以下几种:
- no:不做任何操作
- ByName:根据name查找
- ByType:根据类型查找
- constructor:根据构造器查找
- 在配置文件<Beans>节点中设置default-Autowire属性值,包括以下几种:
- Resources&ResourceLoader
四、AOP(配置、注解)