beanfactory篇-(二)基本概念介绍-九零后大叔的技术博客

沙海
沙海
沙海
994
文章
2
评论
2021年4月24日09:11:38
评论
2 2361字阅读7分52秒
摘要

回顾:通过前面一个章节的了解,我们大概对spring有了一个感性的认识。1.一个beanFactory对象或者一个applicationContext对象就是一个spring容器;2.创建一个beanFactory对象或者一个applicationContext对象,就是一个启动spring容器的过程。本章节,我们在对xml中bean标签的常用属性和一些常用注解做一些基本的介绍。

回顾:通过前面一个章节的了解,我们大概对spring有了一个感性的认识。1.一个beanFactory对象或者一个applicationContext对象就是一个spring容器;2.创建一个beanFactory对象或者一个applicationContext对象,就是一个启动spring容器的过程。本章节,我们在对xml中bean标签的常用属性和一些常用注解做一些基本的介绍。

1.xml的bean里面的标签的具体含义

id标签:表示这个bean在spring环境的唯一标识。注意,这个id不能重复,否则会报错.
name标签:表示这个bean的一个别名。
class标签:表示这个bean是哪个类的实例对象。
parent标签:表示这个bean的父bean是谁。
abstract标签:表示这个bean是一个抽象bean,并不能被实例化。
singleton标签:表示这个bean是否是一个单例。
autowire标签:表示了这个bean的装载方式。byName-通过id或者name,byType-通过类类型进行装配。
init-method标签:表示了指定了这个bean被创建后,需要开发者进行一些个性化配置的初始化方法。
destroy-method标签:表示了指定了这个bean即将被销毁时,需要开发者介入进行一个个性化处理的方法。
factory-bean标签:表示创建自己这个bean的另外工厂bean。
factory-method标签:表示创建自己这个bean的工厂方法。

注意:[8][9]和[10][11]是一对互斥的属性,配置某个bean的时候,选前面二者就不能选择后面二者,选择后二者就不能选择前面二者。

2.一些常用的spring注解

[1] 声明相关注解:
@Controller:表示当前的bean是一个业务controller类。
@Service:表示当前的bean是一个业务service类。
@Repository:表示当前bean是一个dao类
@Component:如果某个业务类,都不属于上面三个业务范畴,那么一般使用Component注解。
@Scope:bean的作用域,一般有singleton,prototype,request,session,global session几个类型。
singleton:表明这个bean是一个单例bean,不管使用getBean()方法调用几次,都是同一个对象。
prototype:表明这个bean是一个原型bean,每调用一次getBean()方法,都会新生成一个对象。
request:一次http请求期间,不管使用getBean()方法调用几次,都是同一个对象。如果该请求结束后,这个bean也就失效了。下一次来一个http请求,会生成一个新的bean,该bean会对应该http请求。
session:一次session会话期间,不管有多少次http请求,使用getBean()方法调用几次,都是同一个bean。
global session:作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。

[2] 注入相关注解:
@Resource:默认通过byName方式注入,但是也支持通过byType方式注入。支持的装配顺序:
如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;
@Autowired:默认通过byType方式注入
@Value:注入一个配置文件内的一个常量值到一个类的属性当中。

[2] 配置类注解:
@Bean:自定义创建bean注解
@Configuration:配置类bean注解
[2] AOP相关注解:
@Aspect:切面注解,表示某个类为一个切面类。
@Order:切面优先级注解,多个切面的时候,这个用于表明切面的优先级。如果有多个切面切在一个类上面,那么可以使用order来安排各个切面的层级。order指定的值越大,该切面代理越是内层代理;order指定的值越小,该切面代理越是外层代理。
@Before:前置通知注解,表明该方法为一个前置拦截方法。
@After:后置通知注解,表明该方法为一个后置拦截方法。
@Around:环绕通知注解,表明该方法为一个环绕包裹拦截方法。

[2] MVC相关注解:
@RequestMapping 用于映射Web请求,包括访问路径和参数(类或方法上)
@ResponseBody 支持将返回值放在response内,而不是一个页面,通常用户返回json数据(返回值旁或方法上)
@RequestBody 允许request的参数在request体中,而不是在直接连接在地址后面。(放在参数前)
@PathVariable 用于接收路径参数,比如@RequestMapping(“/hello/{name}”)申明的路径,将注解放在参数中前,即可获取该值,通常作为Restful的接口实现方法。
@RestController 该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody。
@ControllerAdvice 通过该注解,我们可以将对于控制器的全局配置放置在同一个位置。

beanfactory篇-(二)基本概念介绍-九零后大叔的技术博客

更多知识请关注公众号

继续阅读
weinxin
资源分享QQ群
本站是一个IT技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: