SSM中的相关注解

Java知识点总结:想看的可以从这里进入

2、SSM相关注解


  • 实例化Bean对象的注解

    • @Component(“id名可省略”):对类进行实例化,不分层。不配置id名则默认为类名
    • @Controller:用在控制层上,实例化对象
    • @Service:用在service层上实例化对象
    • @Repository:用在dao层上实例化对象
  • 注入Bean

    • @Autowired(required=false):用于属性上或者set方法(set可以省略)上,表示注入一个对象

      • required为false时可以为null,可省略,当同一类有两个以上对象时,配合Qualifier使用
      • 在含参的构造方法中使用,加到参数前(@Autowired Person p)
    • @Primary:配合Autowired使用,当有多个实现类时,在类上加此注解会告诉IoC容器优先注入此类。但是当两个实现类都加上Primary注解时,还是会出错,它只能解决首要性问题,而非选择性问题。

    • @Qualifier(value=“名”):结合Autowired(默认为按类注入)使用,它会变成根据名字依赖注入,可以消除Primary注解的问题

    • @Resource(name=“”):相当于@Autowired+@Qualifier同时使用(jdk中没有,需要导javax.annotation包)

    • @Value:给普通的属性进行赋值,无法注入对象

      • @Value(“”) 直接给属性赋值
      • @Value(“${key}”) 可以根据键获取.properties配置文件中的值
  • 配置相关(用于取代XML文件配置)

    • @Configuration:指定当前类为一个Spring核心配置类,创建容器时从该类加载注解
      • 代替.xml文件
    • @ComponentScan(“”):指定Spring在初始化容器时要扫描的包
      • 替代xml文件中的<context:component-scan base-package=“com.***”/>
      • 如果()不指定路径,则必须和被扫描的类同包,默认是当前包的路径
      • 两个参数
        • basePackages={“包路径1,包路径2…”},扫描的是指定包下的所有类,优先使用
        • basePackageClasses={类1.class,类2.class…},扫描的是指定的类,需要大量重构的项目中使用
    • @Bean(“”):用在方法上,标注将该方法的返回对象储存到IoC容器中,作为一个Bean
      • 不设置时方法名相当于xml文件bean标签的id值,()内设置后为设置的值
      • 方法的返回值相当于xml文件bean标签的class属性
      • 三个属性
        • name=“”:名,可指定多个
        • initMethod=“”:自定义初始化方法
        • destroyMethod=“”:自定义销毁方法
    • @PropertySource(“classpath:文件名”):加载.properties文件中的配置
      • 属性
        • name:名称
        • value:{“classpath:文件名”,…}
        • ignoreResourceNotFound:默认为false,如果找不到文件是否忽略,不设置,找不到会抛出异常
        • encoding:编码
    • @Import({1.class,2.class,…}):导入其他的配置类
    • @ImportResource({“classpath:applicationContext.xml”,…}):导入xml配置文件
  • 配置开发环境

    • @Profile(“”):根据不同的环境注入不同的对象,配置了profile注解时,使用需要选择激活
      • dev:开发环境、test:测试环境、master:生产环境
  • AOP相关

    • @Aspect:声明类为一个切面
    • @After:用在方法上,使方法成为后置通知
    • @Before:用在方法上,使方法成为前置通知
    • @Around:用在方法上,使方法成为环绕通知
    • @PointCut:声明为一个切点
  • Enable相关注解:内部都包含@Import注解,主要是用来自动导入***配置,并开启对其的支持

    • @EnableAspectJAutoProxy:用在配置类上,开启Spring对AspectJ的支持
    • @EnableAsync:开启异步方法支持
    • @EnableScheduling:开启计划任务支持
    • @EnableWebMvc:开启Web MCV支持
    • @EnableConfigurationProperties:开启对@ConfigurationProperties注解配置Bean的支持。
    • @EnableJpaRepositories:开启对Spring Data JPA Repostory(持久化数据的框架。)的支持。
    • @EnableTransactionManagement:开启注解式事务的支持。
    • @EnableCaching:开启注解式的缓存支持
  • 作用域

    • @Scope:标注对象的作用范围,用在实例化的bean下
      • @Scope不写时,默认值为singleton单例模式
      • @Scope(“prototype”) 换为多例模式
  • 初始方法和销毁方法(需要导javax.annotation包)

    • @PostConstruct:标注 方法为初始化方法
    • @PerDestroy::标注方法为销毁方法
  • SpringMVC相关注解

    • @RequestMapping(“访问路径”):映射一个url到控制器的一个特定方法,通过此路径调用相应方法

      • 用在类上:类中的方法都会生效,路径为(类+方法)
    • 用在方法上:和用在类上的组成一个完整的路径

    • PostMapping():只处理post提交的请求

    • GetMapping():只处理get提交的请求

    • @RequestParam(“”):用于方法的参数前,用来处理前端提交数据名和方法参数名相匹配的问题

      http://localhost:8080/user?id=1
      
    • @ResponseBody:用在方法上,是使方法不再走视图解析器,而是返回字符串数据,通常位JSON。.

    • @RequestBody:注解用于接收前端传来的实体,自动装配到对象中

      @PostMapping("/user")
      public String testRequestBody(@RequestBody User user) {
          System.out.println("获取到的username为:"+ user.getUsername());
          System.out.println("获取到的password为:"+user.getPassword());
          return "success";
      }
      
    • @PathVariable:用来获取 URL 参数,处理Restfull 风格

      // 路径:http://localhost:8080/user/{id}
      @GetMapping("/user/{id}")
      public String testPathvariable(@PathVariable(value="id") Integer id) {	//value可解决名字不匹配
          System.out.println("获取到的id为:"+id);
          return "success";
      }
      
    • RestController:相当于@Controller+ResponseBody

  • mybatis注解

    • Mapper包的扫描:有三种方式

      • @Mapper注解:在Mapper接口上添加,就可以不用使用XML文件
      • @MapperScan({“包1”,“包2”……}):用在核心配置类上,用来扫描mapper接口所在包,可以扫描多个包。不同每个接口都添加@Mapper了
      • 通过配置MapperScannerConfigurer扫描
    • 增删改查

      • @Insert(“SQL语句”):新增
      • @Delete(“SQL语句”):删除
      • @Update(“SQL语句”):更新
      • @Select (“SQL语句”):查询
    • 复杂关系映射:实现复杂关系映射之前我们可以在映射文件中通过配置<resultMap>来实现,在使用注解开发时我们需要借助@Results 注解,@Result 注解,@One 注解,@Many 注解。

      • @Results:与@Result 一起使用,封装多个结果集,@Results({@Result(),@Result()})

      • @Result :结果集封装,代替了<id> 标签和<result>标签

        @Result 中的属性介绍
        id是否是主键字段
        column数据库的列名
        property需要装配的属性名
        one需要使用的@One 注解(@Result(one=@One)()))
        many需要使用的@Many 注解(@Result(many=@many)()))
      • @ResultMap:引用@Results 定义的封装

      • @One:一对一结果集封装,代替了<assocation>标签,是多表查询的关键,在注解中用来指定子查询返回单一对象。@Result(column=" “,property=”“,one=@One(select=”"))

      • @Many:一对多结果集封装,代替了<collection>标签,是是多表查询的关键,在注解中用来指定子查询返回对象集合。@Result(property=“”,column=“”,many=@Many(select=“”))

    • @SelectProvider(type=xxxx.class,method=”xxxx”):反射一个自定义的类,使用类中的方法构造SQL语句。这个类可以使用方法返回SQL语句,添加SelectProvider后就能映射到自定义的类,还能用来拼接动态sql

    • @CacheNamespace:用于Mapper上,是用来实现二级缓存的

    • @Param(value=“id”):用来方法传递的参数上,解决参数名字不匹配的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辰 羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值