Spring常用注解

Spring是一个Java开发框架,主要特性包括IOC(控制反转)和AOP(面向切面编程)。@SpringBootApplication启动类整合了自动配置、组件扫描等功能。@Autowired用于自动注入依赖。文章还介绍了不同类型的注解在Spring管理Bean、处理HTTP请求以及事务处理等方面的应用。
摘要由CSDN通过智能技术生成
    Spring是一个java开发框架。为了解决企业级开发的业务逻辑层和其他层的耦合问题。

它是一个分层的JAVAEE 一站式轻量级框架。Spring负责基本的基础架构,java开发者可以专注于应用程序的开发。

  Spring核心的特性,IOC和AOP。

  IOC:spring是一个容器,管理业务bean。我们需要对象的时候,不需要new,找spring要。

控制反转:我们把创建对象的权力交给spring,我们需要就找spring要。

Spring也叫IOC容器,因为它管理了这些对象。

 DI: 依赖注入,spring构建对象的时候,完成对象属性的赋值。

      基本类型 @Value()

      引用类型  @Autowried     

AOP: 面向切面编程。

        在不侵入原有代码基础上,实现功能的增强!!

        重点是需要掌握这个思想。

1:@SpringBootApplication

位置:SpringBoot启动类上。 约定优于配置。

代表当前的项目启动了。理解为是多个注解的合并。       

 代表容器启动,里面还包含三个主要功能:
@EnableAutoConfiguration  启动springboot自动配置。底层回去扫描起步依赖中的配置信息。
@ComponentScan  扫描包中的类中是否有@Component注解  service的实现类Controler的类。
                                                    @Mapper                             
@Configuration   可以在启动类中使用spring语法,把一些Bean交给spring管理。

2:Spring管理Bean

2.1 @Autowired

public class Demo{

  @Autowired
  private JdbcTemplate jdbcTemplate;

}

@Autowired 自动从spring中导入对象到属性上。去spring中要这个类型的对象。

2.2 @Component @Service @Controller @Repository

@Component 通用的注解,标注该类的对象交给spring管理.
           如果一个bean不知道属于那一层就使用这个注解表示交给spring管理。

  @Service      服务层类的对象交给spring管理。 
  @Controller   控制层类的对象交给spring管理。 
  @Repository   数据访问层类的对象交给spring管理。
  @Mapper       数据访问层接口的实现类对象交给spring管理。

2.3 @RestController

@Controller+@ResponseBody 的结合。
@ResponseBody  响应体的数据,要以json格式 返回。
              说白了就是你写的处理方法的对象--json 写入到响应体中。

2.4 @Scope

声明bean的作用域,对象是单例还是多例的。

@Scope("singleton") 单例的 该类的对象,在整个项目中只有一个。 对象会随着spring容器的产生而产生,随着容器的关闭,而销毁。@Scope("prototype") 原型模式/多例 该类的对象,想要几个有几个,每次要都给新的。 对象不会随着spring容器的产生而产生的,你找spring要,spring就给new一个,给你了,spring不在维护它。 容器关闭和对象的销毁是没有关系的。

2.5 @Configuration

用来声明配置类的,交给spring管理的配置,语义化。一般来说配置类会有交给spring管理的对象 @Bean注解。

3:处理HTTP请求的注解

@RequestMapping

用在类上,作为请求前缀,用于区分不同业务的。

用在方法上,作为处理请求方法的,映射路径。
3.1 Get 请求 获取 查询
类 @RequestMapping("/user")

@GetMappring("/getById")  接受的get请求 

/user/getById 找到指定的处理方法。
3.2 Post 请求 提交 添加
@PostMapping
3.3 Delete 请求 删除 删除

@DeleteMapping

3.4 Put 请求 设置 更新

@PutMapping

4:前后端传值

掌握好前后端传值的正确姿势,你开发的第一步 F12 
4.1 参数在问号位置,或者是简单的表单提交。
  可以不用注解处理,直接接收
/login?username=jack&password=123  

  @GetMapping("/login")
  public R login(String username,String password){}//可以直接接收

  @GetMapping("/login")
  public R login(User user){}//可以对象形式接收 

/register?hobby=抽烟&hobby=喝酒&hobby=烫头
  @GetMapping("/register")
  public R register(String[] hobby){}

  @GetMapping("/register")
  public R register(@RequestParam List<String> hobby){}

@RequestParam

 ① 用于解决前端参数名字 和 方法参数名字不一致问题。

 ② 用于收集  该名字的数据到集合中。
4.2 如果参数 在路径上 restful风格的url
/getById/12

  @GetMapping("/getById/{id}")//  路径中{id}是占位用的
  public R getById(@PathVariable("id")Integer id){}

  @GetMapping("/getById/{id}")//  路径中{id}是占位用的
  public R getById(@PathVariable Integer id){}
4.3 参数在请求体中 put请求和post请求。
前端传递的数据
请求体中 json格式的
请求地址 /login  post方式 
{
  "username":"admin",
  "password":"1234"
}

  @PostMapping("/login")
  public R login(@RequestBody Map map){}

   @PostMapping("/login")
  public R login(@RequestBody User user){}

@RequestBody : 从请求体中取出json格式的数据!!

注意:

一次请求只有一个请求体。

?请求参数可以有多个。

路径上的参数也可以有多个。

5:读取配置信息

yml配置文件。

qiniu:
   name: 大牛
   age:  19
5.1 @Value 形式 (常用)
@Value("${qiniu.name}")
private String name; 
5.2 @ConfigurationProperties (常用)

通过这个注解来完成与bean绑定。把对应的属性数据 设置到 bean中

@Configuration
public class QiniuConfiguration {

    @ConfigurationProperties("qiniu")
    @Bean
    public QiniuUtils qiniuUtils() {
        return new QiniuUtils();
    }

}
@Component
@ConfigurationProperties("qiniu")
@Data
public class QiNiu{
   private String name;
   private Integer age;
}
5.3 PropertySource (不常用)

专门把properties文件 读取到spring中。

6:处理全局异常

Spring针对程序中异常可以进行统一的针对性的处理。

思路就是 所有层次的异常都抛到Controller层,然后抓取到异常之后进行统一处理。

底层用到了AOP的原理,主要用的是异常后通知。

1:@ControllerAdvice 定义全局处理异常的类。
@RestControllerAdvice=@ControllerAdvice +@ResponseBody
2: @ExceptionHandler 注明抓取的异常,用在方法上,代表这个方法是处理这个异常的。
@ExceptionHandler({BusinessRuntimeException.class})
public Result businessRuntimeException(Exception e) {
    // 不同于其它异常,这表示一种正常的业务逻辑,不要打印error级别的日志
    log.info("", e);
    //使用e.getMessage()作为提示语
    return new Result(false, e.getMessage());
}

7:事务处理

7.1 @Transational 用在类上接口上,方法上。

标明该类上接口上的所有方法都要开启事务进行操作,也就是说一个方法就代表一个事务的开启,该方法里面包含的多个sql语句是在一个事务中进行的。从而达到事务的控制。

如果没有问题,正常提交。但凡一个sql出问题了,全部回滚。

7.2 @EnableTransationManagement 开启事务注解扫描
@EnableTransactionManagement

8.1 servlet技术也能用在boot上。

过滤器可以用在springboot上。

@Slf4j
@WebFilter(urlPatterns = "/*")
public class HealthSecurityFilter implements Filter {
}

@ServletComponentScann 扫描 servlet三大组件注解,三大组件对象交给spring管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

龙子钦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值