Spring注解详解

Easter79
• 阅读 613

概述

    注解的优势主配置简单只需要添加标签,JAVA的反射机制就可以根据标签自动注入自动初始化。

@Autowired

    配置方式:属性、setter方法或构造器都可以

    不推荐使用,建议使用@Resource ,因为要使这个注解生效还需要在Spring配置文件中配置AutowiredAnnotationBeanPostProcessor    

    实现成员属性的自动装配,Spring通过BeanPostProcessor类解析@Autowired,需要在Spring配置文件中申明

    AutowiredAnnotationBeanPostProcessor类。这样Spring在启动时将扫描所有的Bean进行注入。

@Qualifier

    配置方式:跟@Autowired配合使用(配置构造器时,需要配置到入参处)

    配置装配方式,默认byType,配置后根据@Qualifier byName装配。

@Resource

    配置方式:属性,默认byName配置,当配置为(type=“name”)时,跟@Autowired相同

    - 这里是列表文本如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常

    - 这里是列表文本如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常

    - 这里是列表文本如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常

    - 这里是列表文本如果既没有指定name,又没有指定type,则自动按照byName方式进行装配(见2);如果没有匹配,则回退为一个原始类型(UserDao)进行匹配,如果匹配则自动装配;

    需要配置文件中配置CommonAnnotationBeanPostProcessor类(CommonAnnotationBeanPostProcessor实现了BeanPostProcessor)

@PostConstruct 和 @PreDestroy

    配置方式:方法体

    @PostConstruct注释的方法将在类实例化后调用

    @PreDestroy注释的方法在类销毁前调用

@Repository

    配置方式:类

    将类识别为bean,同时还能将所标注的类中抛出的数据访问异常封装为Spring的数据访问异常类型。

    @Repository 的基础上增加了功能类似的额外三个注解:@Component、@Service、@Constroller,它们分别用于软件系统的不同层次:

    @Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层次。

    @Service 通常作用在业务层,但是目前该功能与 @Component 相同。

    @Constroller 通常作用在控制层,但是目前该功能与 @Component 相同。

@scopee

    配置方式:类

    @Scope("prototype")指定类的作用范围,当从Spring中获取时,每次返回的都是新实例

@RequestMapping

    配置方式:类 将url和类绑定。 方法 将url和方法绑定。

@RequestParam

    配置方式:参数

    一般用于将指定的请求参数付给方法的形参,默认请求参数名称和方法参数名称相同,也可以(“name”)指定请求参数名称

@SessionAttributes

    配置方式:类

    @SessionAttributes("a","b")将ModelMap中得key为“a”、“b”再放入session中。这样request和session中都有了

@ModelAttribute

    配置方式:方法形参

    配合@SessionAttribute一起使用时,可以将ModelMap中得属性的值自动赋值给指定的变量

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
spring注解
随着越来越多地使用Springboot敏捷开发,更多地使用注解配置Spring,而不是Spring的applicationContext.xml文件。Configuration注解:Spring解析为配置类,相当于spring配置文件Bean注解:容器注册Bean组件,默认id为方法名@Configurat
Easter79 Easter79
3年前
springboot下 shiro使用ehcache和@cacheable冲突的处理
springboot提供缓存注解标签@Cacheable,当使用ehcache时,autoconfig机制会根据配置文件自动去初始化bean而shiroConfig在@Configuration构造时,也会去初始化ehcache,项目启动会产生如下异常org.apache.shiro.cache.CacheException:net.sf.
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
spring3.x注解自动注入
一、各种注解方式1.@Autowired注解(不推荐使用,建议使用@Resource)@Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。@Autowired的标注位置不同,它们都会在Spring在初始化这个bean时,自动装配这个属性。要使@Autowired能够工作,还需要在配置文件中加入以下Xml代码
Easter79 Easter79
3年前
SpringMvc中@resource和@autowired区别
在java代码中使用@Autowired或@Resource注解方式进行装配这两个注解的区别是:@Autowired默认按类型装配,@Resource(https://my.oschina.net/u/929718)默认按名称装配,当找不到与名称匹配的bean才会按类型装配。如果我们想使用按名称装
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k