Spring(一)

一、了解Spring

1、简介
Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control反转控制)和AOP(Aspect Oriented Programming面向切面编程)为内核,提供了展现层SpringMVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术

2、优势
(1)方便解耦,简化开发
(2)AOP编程的支持
(3)声明式事务的支持
(4)方便程序测试
(5)方便集成各种优秀框架
(6)降低JavaEE API(如JDBC、JavaMail、远程调用等)进行了薄波的封装层

二、IOC的概念和作用

1、概念
把创建对象的权力交给框架,主要包括依赖诸如Dependency Injection(DI)和依赖查找Dependency Lookup)

2、作用
削减计算机程序的耦合,解除代码中的依赖关系

3、版本
spring5版本是用jdk8编写的,同时tomcat版本也要求8.5及以上

4、入门流程
(1)必要jar包
(2)在类的根路径下创建一个任意名称的xml文件(不能是中文)
(3)给配置文件导入约束

/spring-framework.RELEASE/docs/spring-framework-reference/html5/core.html

(4)让spring管理资源,在配置文件中配置service和dao

5、BeanFactory和ApplicationContext的区别
(1)BeanFactory是Spring容器中的顶层接口
(2)ApplicationContext是它的子接口
(3)区别
ApplicationContext:只要一读取配置文件,默认情况下就会创建对象
BeanFactory:什么使用什么时候创建对象

6、ApplicationContext接口的实现类
(1)ClassPathXmlApplicationContext:从类的根路径下加载配置文件
(2)FileSystemXmlApplicationContext:从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置
(3)AnnotationConfigApplicationContext:当我们使用注解配置容器对象时,需要使用此类来创建spring容器,用来读取注解

三、Bean标签

1、bean标签
(1)作用
用于配置对象让spring来创建的
默认情况下,它调用的是类中的无参构造,没有无参构造函数则不能创建成功
(2)属性

id:给对象在容器中提供一个唯一标识,用于获取对象
class:指定类的全限定类名,用于反射创建对象,默认情况下调用无参构造函数
scope:指定对象的作用范围
singleton:默认值,单例的
prototype:多例的
request:WEB项目中,spring创建一个Bean的对象,将对象存入request域中
session:WEB项目中,spring创建一个Bean的对象,将对象存入request域中
global session:WEB项目中,应用在Portlet环境,如果没有Portlet环境,那么globalSession相当于Session
init-method:指定类中的初始化方法名称
destory-method:指定类中销毁方法名称

(3)bean的作用范围和生命周期

单例对象:scope=“singleton"
	一个应用只有一个对象的实例,它的作用范围就是整个引用
		生命周期:
			对象出生:当应用加载,创建容器时,对象就被创建了
			对象活着:只要容器在,对象一直活着
			对象死亡:当应用卸载,销毁容器时,对象就被销毁了
多例对象:scope="prototype"
	每次访问对象时,都会重新创建对象实例
		生命周期:
			对象出生:当使用对象时,创建新的对象实例
			对象活着:只要对象在使用中,就一直活着
			对象死亡:当对象长时间不用时,被java的垃圾回收期器回收了

2、实例化Bean的三种方法
(1)使用默认无参构造器
(2)spring管理静态工厂–使用静态工厂的方法创建对象
(3)spring管理实例工厂–使用实例工厂的方法创建对象

四、依赖注入

1、定义
Dependency Injection依赖注入,是spring的框架核心Ioc的具体实现,等框架把持久层对象传入业务层,而不用自己区获取

2、构造函数注入
(1)使用类中的构造函数,给成员变量赋值
通过配置的方式,让spring框架来为我们注入
(2)涉及到的标签constructor-arg
属性:index指定参数在构造函数参数列表的索引位置
type指定参数在构造函数中的数据类型,name指定参数在构造函数中的名称
value指定赋的值(基本数据类型和string类型),ref指定其他bean的类型

3、set方法注入
(1)通过配置文件给bean中属性传值:用set方法的方式
(2)涉及的标签property
属性:name:找的是类中set方法后面的部分;ref指定属性赋值是其他bean类型;value给属性赋值是基本数据类型和string类型的

4、注入集合属性
(1)给类中的集合成员传值,用set方法注入,只不过变量的数据类型都是集合
(2)注入集合数据
List结构:array,list,set
Map结构:map,entry,props,prop

5、IOC实现CRUD注解整合
(1)导入约束时需要多导入一个context名称空间下的约束
(2)告知spring创建容器时要扫描的包

<context:component-scan base-package="d.d"></context:component-sacn>

五、常用注解

1、创建对象
(1)@Component
把资源让spring来管理,相当于在xml中配置一个bean
属性:value指定bean的id,如果不指定value属性,默认bean的id是当前类的类名,首字母小写
(2)@Controller
一般用于表现层的注解
(3)@Service
一般用于业务层的注解
(4)@Repository
一般用于持久层的注解

2、注入数据
(1)@Autowired
自动按照类型注入。当使用注解注入属性时,set方法可以省略,只能注入其他bean类型,当有多个类型匹配时,使用要注入的对象变量名称作为bean的id,在spring容器查找,找到了也可以注入成功,找不到就报错
(2)@Qualifier
在自动按照类型注入的基础之上,再按照Bean的id注入,它在给字段注入时不能独立使用,必须和@Autowire一起使用,但是给方法参数注入时,可以独立使用
属性:value指定bean的id
(3)@Resource
直接按照Bean的id注入,也只能注入其他bean类型
属性:name指定bean的id
(4)@Value
作用:注入基本数据类型和String类型数据的
属性:value用于指定值

3、改变作用范围
@Scope
作用:指定bean的作用范围
属性:value:指定范围的值,取值singleton、prototype、request、session、globalsession

4、和生命周期相关的
(1)@PostConstruct用于指定初始化方法
(2)@PreDestroy用于指定销毁方法

展开阅读全文
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读