Spring相关注解

1.SpringMVC中的Bean是线程安全的吗? 说出你的解决方案?

spring 中的 bean 默认是单例模式,spring 框架并没有对单例 bean 进行多线程的封装处理。 实际上大部分时候 spring bean 无状态的(比如 dao 类),所有某种程度上来说 bean 也是安全的,但如果 bean 有状态的话(比如 view model 对象),那就要开发者自己去保证线程安全了,最简单的就是改变 bean 的作用域,把“singleton”变更为“prototype”,这样请求 bean 相当于 new Bean()了,所以就可以保证线程安全了。

2.SpringMVC的执行流程?

1.用户发送请求至DispacherServlet(前端控制器)。

2.DispacherServlet收到请求调用HandlerMapping处理器映射器。

3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器,一并返回给DsipacherSerlvet

4.DispacherServlet通过HandlerAdapter处理器适配器调用处理器。

5.执行处理器(即Controller)

6.Controller执行完之后返回ModelAndView。

7.HandlerAdapter将Controller执行结果ModelAndView返回给DispacherServlet。

8.DsipacherServlet将ModelAndView传给ViewResolver视图解析器。

9.ViewResolver解析后返回具体的View。

10.DispacherServlet对视图进行渲染。

11.响应用户

3.@RequestMapping注解作用

 @RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一。这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上。并且一个处理请求地址映射的注解,可用在类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

4.@RequestBody 和@ResponseBody的区别

@RequestBody的作用是将前端传来的json格式的数据转为自己定义好的javabean对象.
@ResponseBody的作用是将后端以return返回的javabean类型数据转为json类型数据。

5.@RequestParam和@PathViriable的区别

@RequestParam:用于获取传入参数的值
@PathViriable:用于定义路径参数值

6.@Resource和 @Autowired/ @Qualifier的区别

1.@Resource是java的注解,@Autowired是spring的注解

2.@Autowired是byType注入的,@Qualifier是byName注入的,这俩注解组合起来相当于@Resource注解
@Qualifier的作用是在按照类中注入的基础之上再按照名称注入。它在给类成员注入时不能单独使用(但是在给方法参数注入时可以单独使用),因此@Qualifier注解很受限制,因此用的不是很多。@Qualifier常常组合@Autowired一起使用,用来指明具体名字的自动装配

3.@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。如果没有指定name,则回退为按照byType注入。

7.@Controller, @Service, @Repository,@Component作用

1.@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。

2、@Service:用于标注业务逻辑层服务,主要用来进行业务的逻辑处理,注入DAO。这种bean默认是单例的,如果想改变,可以使用@Service(“beanName”) 、@Scope(“prototype”)来改变。

3、@Repository注解用于标注数据访问组件,是告诉Spring,让Spring创建一个名字叫“userDao”的UserDaoImpl实例。不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。

4、@Component:把普通的类实例化到spring容器中,相当于配置文件中的 <bean id="" class=""/>。泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Repository、@Services等的时候),我们就可以使用@Component来标注这个类。

8.@Transactional注解作用

@Transactional采用注解式事务,所有标记为这个注解的并且能被spring扫描到的方法都会根据@Transactional的配置来使用事务,

9.@Configuration注解作用

@Configuration可以作用在任意类上,表示该类是一个配置类,其实就相当于一个xml配置文件。

10.AOP的常用注解

@Aspect:
作用:把当前类声明为切面类。

@Before:
作用:把当前方法看成是前置通知。
属性: value:用于指定切入点表达式,还可以指定切入点表达式的引用。 


@After
作用:把当前方法看成是始终通知。
属性: value:用于指定切入点表达式,还可以指定切入点表达式的引用。


@AfterReturning
作用:把当前方法看成是后置通知。
属性: value:用于指定切入点表达式,还可以指定切入点表达式的引用。


@AfterThrowing
作用:把当前方法看成是异常通知。
属性: value:用于指定切入点表达式,还可以指定切入点表达式的引用。


@Around
作用:把当前方法看成是环绕通知。
属性: value:用于指定切入点表达式,还可以指定切入点表达式的引用。


@Pointcut
作用:指定切入点表达式
属性: value:指定表达式的内容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值