企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
> ### `@Component` * 作用在类上,默认为`singleton` * 被`@Component`注解标注的类会被Spring扫描并注册为`Bean` * `@Component`使用在不确定哪一个层的时候使用,可以作用在任何层次,把普通`pojo`实例化到`spring`容器 <br/> > ### `@Service` * `@Service`是`@Component`注解的一个特例,作用在类上,默认为`singleton` * `@Service`用于标注业务层组件,表示定义一个`bean` <br/> > ### `@Scope` * `@Scope`作用在类上和方法上,用来配置 `spring bean` 的作用域 * `singleton`单例模式 * `prototype`原型模式 * `request`模式,只适用于Web程序,每一次HTTP请求都会产生一个新的bean * `session`模式,只适用于Web程序,session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效 <br/> > ### `@Repository` * `@Repository`注解作用在类上,默认为singleton,用于标注数据访问组件,即DAO组件 * `@Repository`注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型 <br/> > ### `@Controller` * `@Controller`注解作用在类上,用于标注Web中控制层组件 * 被`@Controller`标注的类负责处理由`DispatcherServlet`分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个`Model `,然后再把该`Model`返回给对应的`View`进行展示 * `@Controller`和`@RequestMapping`、`@RequestParam`等一些注解共同处理URL的映射 <br/> > ### `@RequestMapping` * `@RequestMapping`注解作用在类或方法上,用来处理请求地址映射,有7个属性 * `value`和`path`熟悉指定请求的实际地址,如:`@RequestMapping("/test")`,`@RequestMapping(path="/test/*.do")` * `method`属性,表示请求类型:` GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE`,另外,Spring Boot也提供了简化版后的`@RequestMapping`,如`@GetMapping`,`@PostMapping` * `consumes`,指定处理允许的媒体类型,例如`application/json`, `text/html` * `produces`,指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回 ``` // 仅处理request请求中Accept头中包含了"text/plain"的请求,同时暗示了返回的内容类型为text/plain @RequestMapping(value="/test", products="text/plain") @RequestMapping(value="/test", produces={"text/plain", "application/*"}) ``` * `params`,指定request中必须包含的请求参数,才会进入此方法 ``` // 仅处理请求中包含了名为“action”,值为“query”的请求 @RequestMapping(value = "/test", params="action=query") ``` * `headers`,指定请求中必须包含的请求头,才能进入此方法 * `@RequestMapping`请求路径匹配 * 符号 * 匹配任一字符 * 符号 ** 匹配任意路径 * 符号 ? 匹配单个字符 * 如果一个请求有多个@Requestmapping能够匹配,通过匹配更具体的方法处理此请求 * `@RequestMapping`方法参数 * @PathVariable - 将URL中的值映射到方法参数中 * Model - Spring MVC中通用的模型 * JavaBean - 将HTTP参数映射到JavaBean对象 * MultipartFile - 用于处理文件上传 <br/> > ### `@ResponseBody` * `@ResponseBody`注解直接将返回的对象输出到客户端 * 如果返回字符串,直接返回;如果返回不是字符串,默认使用Jackson将对象序列化成JSON字符串后输出 <br/> > ### `@RestController` * `@RestController = @Controller + @ResponseBody`,直接将返回的对象输出到客户端 <br/> > ### `@AutoWired` * `byType`方式,自动注入`bean`,当加上(`required=false`)时,就算找不到bean也不报错 * `@Qualifier`,配合`@AutoWired`使用,当`bean`有多个实现类时,可用该注解指定其中的一个,如:`@Qualifier("apple")` <br/> > ### `@Transactional ` * 在应用系统调用声明了`@Transactional`的目标方法时,`Spring Framework`默认使用 AOP 代理,在代码运行时生成一个代理对象,根据`@Transactional`的属性配置信息,这个代理对象决定该声明`@Transactional`的目标方法是否由拦截器`TransactionInterceptor`来使用拦截,在`TransactionInterceptor`拦截时,会在目标方法开始执行之前创建并加入事务,并执行目标方法的逻辑, 最后根据执行情况是否出现异常,利用抽象事务管理器`AbstractPlatformTransactionManager`操作数据源`DataSource`提交或回滚事务。 * `readOnly`,否为只读事务,设置为true表示只读,false则表示可读写,默认值为false * `propagation`,设置事务的传播行为 * `isolation`,设置底层数据库的事务隔离级别 * `timeout`,设置事务的超时秒数,默认值为-1表示永不超时 * `rollbackFor`,需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。 * `rollbackForClassName`,设置需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,则进行事务回滚。 * `noRollbackFor`,设置不需要进行回滚的异常类数组 * `noRollbackForClassName`,设置不需要进行回滚的异常类名称数组