spring框架/springMVC/springboot注解

后端三层:

web(表示层):
1.接收参数		2.调用service		3.返回结果

service(业务层):
1.调用dao		2.业务处理

dao(持久层):
操作数据库	方法 sql

为什么service层要有一个接口、一个实现类?

是为了解耦合:解开service和servlet的耦合

Spring框架(全称Spring Framework 是Spring核心)

Spring框架有两个大的核心知识点:SpringIOCSpringAOP,它们两个合起来就是Spring框架。

整个SpringIOC做的事情就两件:
1.spring容器帮程序员创建对象。
2.帮程序员给对象中的属性赋值。

所以说SpringIOC思想的核心是改变了对象的创建者和关系的维护者。

SpringMVC框架

SpringMVC框架是为了简化原来的Servlet代码,原生servlet很多很麻烦,学完springmvc之后,servlet就很好写。

SpringBoot框架

SpringBoot框架是对Spring框架和SpringMVC框架的简化。

框架代码很少,主要是理解。

Spring框架下的注解:

1.@Component(让Spring帮忙创建对象)

Component是组件的意思,组件注解,声明在spring容器中每个都是一个小零件,只要把Component注解往类上一加,这个类创建(new)对象的动作就由spring容器来做。
底层是反射技术,扫描到component注解时就在底层用反射技术拿到类名然后创建类的对象。
程序员只负责写类,当spring扫描到component注解时就会创建类的对象,创建好之后会放入SpringIOC容器中(容器中就是放对象的)。

2.@Autowired(自动注入、自动装配)(让Spring帮忙给对象属性赋值)

Autowired的使用场景:当在service的对象里需要一个dao的对象的时候,spring扫描到autowired注解时,会在spring容器中寻找有没有一个dao的对象。

如果发现有,就会把进行自动赋值,把spring容器中的值赋值给service对象中的dao属性。

3.@Controller @Service @Repository(标注在自己开发的类上,用于将当前类对象放入Spring容器)

这三个注解的功能跟@Component类似,他们分别标注在不同的层上。
@Controller 标注在表示层的类上
@Service 标注在业务层的类上
@Repository 标注在持久层的类上
推荐使用这三个,当一个类实在不好归属在这三个层上时,再使用@Component

4.@Bean(标注在配置类中的方法上,用于将方法的返回值对象放入Spring容器)
这个注解一般标注在配置类中也就是**@Configuration**标注的类上
用来将第三方类加载到spring容器中

5.@Configuration(标注在配置类上,声明为配置类)

这个注解标注后,Spring容器启动时会自动加载这些类中的配置

6.@ComponentScan(标注到主配置类上,声明包的扫描范围)

注意 在test测试类时主配置类必须被导入
导入后可以通过扫描包加载子配置类

7.@Scope(用来定义Bean的作用域)
里面有五个属性值

  • singleton 单例,对于一个类,只会创建一个对象,每次从容器中获取,拿到的都是这个对象
  • prototype 多例,对于一个类,每次从容器中获取,都会创建一次,得到一个新的对象
  • request 在web环境中,每个请求范围内会创建新的对象
  • session 在web环境中,每个会话范围内会创建新的对象
  • application 在web环境中,每个应用范围内会创建新的对象

8.@Qualifier和@Primary(管理赋值的类型)

@Qualifier要和@Autowired联合使用,标注在要赋值的属性上,代表在按照类型匹配的基础上,再按照指定名称匹配
(如果一个接口类有多个实现类用@Autowired会报错,@Qualifier里面指定要获取那个类型)

@Primary标注在实现类上,表示当一个接口有多个实现的类时,默认使用哪个作为主实现

9.@RunWith和@ContextConfiguration (对测试类进行优化)

下面是用法展示
@RunWith里面值一般固定
@ContextConfiguration里面的值一般写spring主配置类
用法如图10.@EnableAspectJAutoProxy(标注在Spring配置类中,激活切面自动代理)

11.@Aspect (标注切面类)

和@Componenty一起使用

12. @before,@after-returning,@after-throwing,@after(控制增强方法在切点方法的哪个位置执行)

  • 前置通知(before):增强方法在切点运行之前执行
  • 返回后通知(after-returning):增强方法在某切点正常完成后执行的通知,不包括抛出异常的情况
  • 异常后通知(after-throwing):增强方法在某切点抛出异常退出时执行的通知
  • 后置通知(after):增强方法在某切点退出的时候执行的通知(不论是正常返回还是异常退出)
    注意所有增强方法要用public void修饰

13.@Around(环绕通知)

注解要写在public Object 方法名(ProceedingJoinPoint pjp)方法上

  try {     //写前置通知
            obj=pjp.proceed();
            //写返回后通知
            return obj;
        }catch (Throwable e){
        //写异常后通知
            throw new RuntimeException(e);
        }finally {
        //写后置通知
        }

14.@execution(指定一组规则来匹配某些类中的方法,匹配中的就是切点 )
(* com.itheima.anno.LogAnno · * . * (…))
意思是匹配多个com.itheima.anno.LogAnno 类下面的 任意名称 任意参数的方法
… 两个点匹配的是0个或者多个对象
* 匹配一个或多个对象

15.@annotation(指定一个注解,凡是标有此注解的方法都是切点)

这个注解要写在@execution内
在使用前要自己定义一个注解 @annotation里面写全类名

16.@Order(写在切片类注解下面指定执行顺序)

数字越大执行顺序越靠后

16.@Transactional (带有这个注解的方法或类会交给spring进行事务管理)

事务特点:成功执行不回滚 一般出现异常会回滚
rollbackFor属性 指定一个异常 发生这个异常回滚
propagation属性 事务传播行为 有七个值

REQUIRED【默认值】需要事务,有则加入,无则创建新事务
REQUIRES_NEW需要新事务,无论有无,总是创建新事务
SUPPORTS支持事务,有则加入,无则在无事务状态中运行
NOT_SUPPORTED不支持事务,在无事务状态下运行,如果当前存在已有事务,则挂起当前事务
MANDATORY必须有事务,否则抛异常
NEVER必须没事务,否则抛异常
NESTED如果一个活动的事务存在,则运行在一个嵌套的事务中。如果没有活动事务, 则开启一个新的事务。
内层事务依赖于外层事务。外层事务失败时,会回滚内层事务所做的动作。
而内层事务操作失败并不会引起外层事务的回滚。

SpringMVC下的注解

1.@EnableWebMvc(标注在Spring配置类开启SpringMVC功能)

2.@RequestMapping(用于建立请求URL和处理方法之间的对应关系)

  • value: 等同于path,用于为当前方法绑定访问路径
  • method:用于限制请求类型,如果省略此选项,代表不对请求类型做限制
    标注在类上的时候类中所有方法共用一个路径

3.@ResponseBody(标注在发生响应给浏览器的方法上)

4.@Controller(标注在controller层的类上)
只有标注了这个方法的类才能使用RequestMapping

5.@RestController(相当于@Controller 和 @ResponseBody的功能)

6.@DateTimeFormat(标注在接受请求的方法的参数前面 用于接收指定格式日期参数)
属性pattern进行格式指定

7.@RequestBody(标注在标注在接受请求的方法的参数后面 )

一般用在处理POST的请求中请求体内的JSON数据 将其转换为对象接收

8.@PathVariable(标注在标注在接受请求的方法的参数前面,用于处理路径传参)

9.@RequestParam(请求参数有多个时用这个指定接收参数,标注在标注在接受请求的方法的参数前面 )

用集合接受前端传过来的参数组合需要这个号注解

  • name 属性对应请求参数的一个属性 将其赋值给处理方法的一个参数
  • defaultValue属性 当参数为非必传参数且前端没有传入参数时,指定一个默认值
  • required属性 前端传入的参数是否为非必须参数 默认为true

10. @RestControllerAdvice(标注在类上,声明当前类是一个用于专门处理异常的类)

11. @ExceptionHandler(标注在方法上,声明当前方法可以处理哪些异常)

SpringBoot注解

1.@SpringBootApplication(SpringBoot核心注解,标注在SpringBoot启动类上)

2. @ConfigurationProperties(标注在Bean对象上 用于将配置文件中的属性值批量注入到某个Bean对象的多个对应属性中)

3.@SpringBootTest(标注在测试类上 测试类必须在SpringBoot的启动类所在的包之下)

4.@MapperScan(标注在SpringBoot启动类上 扫描Mapper)

5.@ServletComponentScan(标注在SpringBoot类上 开启过滤器支持)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你小汁完了

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

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

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

打赏作者

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

抵扣说明:

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

余额充值