1.IOC的注解:
声明bean的注解:
@Component:这是一个通用注解,标注让spring容器管理,功能可分成以下三个子注解 @Controller:用于控制层,标记该类是一个控制类。
@Service:用于业务层,标记该类是一个业务处理类。
@Repository:用于Dao层。
@value:值类型的注入
1)实体类属性上:通过反射field赋值
2)方法上:通过set反射赋值
@Scope(" ") : 用于指定单例或者多例,默认是单例 (singleton:单例 ,prototype:多例)
2.DI的注解:
@Autowired(由spring提供):默认以类型进行查找。自动配置bean,但匹配多个类型一致的对象,将无法选择具体注入哪个对象,而@Qualifier(" ") 可以告诉spring容器自动装配哪个名称的对象。
@Resource(jdk):默认以名称进行查找
手动注入,指定注入哪个名称的对象,@Resource注解是jdk1.6后才有。
3.声明式事务:@Transactional (通常用在service层)
1)事务属性:传播行为,隔离级别,回滚,只读,过期
2)声明式事务管理的底层是建立在 AOP 的基础之上的;优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件(pom.xml)中做相关的事务规则声明
MVC:
@requestMapping 用于请求 url 映射。
@RequestBody 注解实现接收 http 请求的 json 数据,将 json 数据转换为 java 对象。
@ResponseBody 注解实现将 controller 方法返回对象转化为 json 响应给客户
@RequestParam作用:把请求中指定名称的参数给控制器中的形参赋值。
属性:value : 要求一定要有指定名字的参数
required: 是否一定要有这个参数,默认是true ,
defaultValue :如果没有携带指定的参数,那么就把默认值赋值给方法的形参。
@RequestBody
注意: get 请求方式不适用。
作用:
1. 获取请求体(针对post请求),赋值给方法的形参,如果拿到请求体,打印结果是这样的:username=admin & password=123
2. 把客户端提交的json数据直接转化成JavaBean对象
属性:required : 默认值是true, 要求必须有请求体,此时get请求提交上来会报错,如果修改成false, 则get请求可以提交上来,但是没有数据,请求体为null
@RequestParam 作用:要求客户端提交的参数一定要有某个指定的名称,并且它可以把指定名称的参数赋值给方法的形参
属性:value : 要求一定要有指定名字的参数
required: 是否一定要有这个参数,默认是true ,
defaultValue :如果没有携带指定的参数,那么就把默认值赋值给方法的形参。
@PathVariable 作用:用来截取地址里面的数据,主要是配合RestFul风格使用
属性:value 和 name: 表明了拿地址里面的什么占位名字的数据赋值给方法的参数。
@RequestHeader 作用:用于获取请求头
属性:name 和 value: 请求头的名字
required: 是否要求一定要有请求头
defaultVaule : 如果没有请求头,那么就把这个默认值赋值给方法的形参。
springBoot:
@ComponentScan: 扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理。等价于<context:component-scan>的xml配置文件中的配置项。(启动类上)
@Autowired: 是spring的自动装配,这个注解可以用到构造器,变量域,方法,注解类型上。
@Transactional:可以声明事务,可以添加在类上或者方法上。且事务的开启只能在public 方法上。
@ControllerAdvice 和 @ExceptionHandler 配合完成统一异常拦截处理。
控制层:
@RestController 是@Controller 和@ResponseBody的结合,一个类被加上@RestController 注解,数据接口中就不再需要添加@ResponseBody。
@RequestMapping(value=" ",method= RequestMethod.GET ),我们都需要明确请求方式。
业务层:
@Service:这个注解用来标记业务层的组件,我们会将业务逻辑处理的类都会加上这个注解交给spring容器。
@Resource和@Autowired一样都可以用来装配bean,都可以标注字段上,或者方法上。
持久层:
@Repository注解类作用于DAO对象,管理操作数据库的对象。
@Component是通用注解,其三个子注解是这个注解的拓展。