SSM常用注解的作用

SSM常用注解的作用

持续更新

本文转载自博客园作者“小路学习”,原文链接https://www.cnblogs.com/shqnl/p/11337659.html

一.注解:
注解分为两类,一种是使用bean的(@Autowired , @Resource),一种是注册bean的(@Component , @Repository , @ Controller , @Service , @Configration)

1.@Bean注解
@Bean 标识一个用于配置和初始化一个由SpringIoc容器管理的新对象的方法,类似于XML配置文件的,一般与@Configration注解配合使用

注册bean

2.@Service注解

首先,在配置root-config.xml文件中加一行:

加上这一行以后,将自动扫描路径下面的包,如果一个类带了@Service注解,将自动注册到Spring容器,不需要再在applicationContext.xml文件定义bean了

类似作用的还包括@Component、@Repository、@Controller:

3.@Component注解
把普通pojo实例化到spring容器中,相当于配置文件中的
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类
4.@Repository注解
用于标注数据访问组件,即DAO组件,再稍微大点的项目里,使用xml的bean定义来配置会大大增加代码体积且不易维护,所以引入了自动扫描的机制,它的作用和在xml文件中使用bean节点配置组件时一样的。

5.@Controller注解
当组件属于控制层时,则使用@Controller注解

被Controller标记的类就是一个控制器,这个类中的方法,就是相应的动作

6.@Configration注解
@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器

需要注意的是:

@Configuration不可以是final类型;

@Configuration不可以是匿名类;

嵌套的configuration必须是静态类。

Bean注解主要用于方法上,有点类似于工厂方法,当使用了@Bean注解,我们可以连续使用多种定义bean时用到的注解,譬如用@Qualifier注解定义工厂方法的名称,用@Scope注解定义该bean的作用域范围,譬如是singleton还是prototype等。

使用bean

7.@Autowired 注解
它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。

@Autowired注解可用于为类的属性、构造器、方法进行注值。默认情况下,其依赖的对象必须存在(bean可用)如果容器中包含多个同一类型的Bean,那么启动容器时会报找不到指定类型bean的异常,解决办法是结合@Qualifier注解进行限定,指定注入的bean名称

8.@Resource注解
@Resource和@Autowired注解都是用来实现依赖注入的。只是@Autowired按byType自动注入,而@Resource默认按 byName自动注入

@Resource依赖注入时查找bean的规则

既不指定name属性,也不指定type属性,则自动按byName方式进行查找。如果没有找到符合的bean,则回退为一个原始类型进行进行查找,如果找到就注入。
只是指定了@Resource注解的name,则按name后的名字去bean元素里查找有与之相等的name属性的bean。
只指定@Resource注解的type属性,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
既指定了@Resource的name属性又指定了type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常

除此之外还有很多注解

9.@Override注解
标示当前的方法定义将覆盖超类中的方法他告诉我们同时也告诉编译器我们的这些方法肯定覆盖了类里面的方法,如果注释掉类里面的方法 那么就会报错,它需要全部覆盖某个接口的方法。

10.@ComponentScan注解
@ComponentScan告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并且装入bean容器。

例如,如果你有个类用@Controller注解标识了,那么,如果不加上@ComponentScan,自动扫描该controller,那么该Controller就不会被spring扫描到,更不会装入spring容器中,因此你配置的这个Controller也没有意义。

11.@PropertySouce注解
通过@PropertySource注解将properties配置文件中的值存储到Spring的 Environment中,Environment接口提供方法去读取配置文件中的值,参数是properties文件中定义的key值。

12.@ImportResource注解和@Import注解
@Import注解是引入带有@Configuration的java类。

@ImportResource是引入spring配置文件.xml

13.@RequestMapping
是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

14.@ResponseBody注解
@ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据

15.@RequestParam注解
@RequestParam将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)

语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=”默认值”)

  • value:参数名
  • required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
  • defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值

(name和value两个属性基本是等价的,都是获取从前台传入的参数)
16.@Param注解
@Param注解的作用:1.便于传多个参数;2.可以为参数添加别名

    @Insert(("insert into users_role(userId,roleId) values(#{userId},#{roleId})"))
    void addRoleToUser(@Param("userId") String userId, @Param("roleId") String roleId);

17.@Value(转载自博客园作者“秋刀”,原文链接:https://www.cnblogs.com/liuqijia/p/11428789.html)
该注解作用的作用是将我们配置文件的属性读出来,有@Value("${}")和@Value("#{}")两种方式

@Value注解作用的两种方式

  • 第一种方式@Value("${}"):在使用Springboot项目搭建的项目时,配置文件application.properties中已经被加载到了项目中,在项目中可以通过该注解获取配置文件中的信息
  • 第二种方式@Value("#{}"):两种的注解区别在值上的区别为:
    @Value的值有两类:
    ① ${ property : default_value }
    ② #{ obj.property? :default_value }
    第一个注入的是外部配置文件对应的property,第二个则是SpEL表达式对应的内容。 那个default_value,就是前面的值为空时的默认值。注意二者的不同,#{}里面那个obj代表对象。

就是说,在使用该注解的时候,书写上根据对象.属性来获取值,而@Value("${}")是直接根据配置文件中的属性获取信息。

例子:

  1. 假如配置文件中有个配置信息为 —>spring.jpa.database=mysql
  2. 准备一个实体类:
    在这里插入图片描述
    注:@Component的注解是将改类作为springboot的一个组件,该组件的作用是从application.properties文件中读取自定义信息
  3. 在控制层中使用@Value("#{}")注解:
    在这里插入图片描述

注: 此文章只为记录开发过程中的错误,学习,如发现侵权请私信删除

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值