当前位置:   article > 正文

Spring常用注解_spring实例化的时机

spring实例化的时机

Spring注解

@Component:使用在类上用于实例化Bean,可以代替@Controller、@Service、@Repository或其他用于实例化Bean

@Controller:使用在web层类上用于实例化Bean

@Service:使用在service层类上用于实例化Bean

@Repository:使用在dao层类上用于实例化Bean

@Autowired:使用在字段上用于根据类型依赖注入

@Qualifier:结合@Autowired一起使用用于根据名称进行依赖注入

@Resource:相当于@Autowired+@Qualifier,按照名称进行注入

@Value:注入普通属性

@Scope:标注Bean的作用范围

当scope的取值为singleton时

Bean的实例化个数:1个

Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例

Bean的生命周期

对象创建:当应用加载,创建容器时,对象就被创建了

对象运行:只要容器在,对象一直活着

对象销毁:当应用卸载,销毁容器时,对象就被销毁了

当scope的取值为prototype时

Bean的实例化个数:多个

Bean的实例化时机:当调用getBean()方法时实例化Bean

对象创建:当使用对象时,创建新的对象实例

对象运行:只要对象在使用中,就一直活着

对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了

@PostConstruct:使用在方法上标注该方法是Bean的初始化方法,指的是在项目启动的时候执行这个方法,也可以理解为在spring容器启动的时候执行

@PreDestroy:使用在方法上标注该方法是Bean的销毁方法,指的是在项目销毁的时候执行这个方法

@Configuration:用于指定当前类是一个 Spring 配置类,当创建容器时会从该类上加载注解

@ComponentScan:用于指定 Spring 在初始化容器时要扫描的包。 作用和在 Spring 的 xml 配置文件中的 <context:component-scan base-package="com.包名"/>一样

@Import:用于导入其他配置类

@Bean:使用在方法上,标注将该方法的返回值存储到 Spring 容器中

@PropertySource:用于加载.properties 文件中的配置

@Runwith:注解替换原来的运行期

@ContextConfiguration:指定配置文件或配置类

@ControllerAdvice:主要用来处理全局数据,一般搭配@ExceptionHandler、@ModelAttribute以及@InitBinder使用。

@ExceptionHandler:统一处理某一类异常,从而能够减少代码重复率和复杂度,一般搭配@ControllerAdvice

SpringMVC注解解析

@RestController:是@controller和@ResponseBody 的结合

@controller使用在web层类上用于实例化Bean

@ResponseBody:告知SpringMVC框架,方法返回的字符串不是跳转是直接在http响应体中返回,不进行视图跳转,直接进行数据响应

@RequestMapping("/路径"):用于建立请求 URL 和处理请求方法之间的对应关系

作用:用于建立请求 URL 和处理请求方法之间的对应关系

位置:

类上,请求URL 的第一级访问目录。此处不写的话,就相当于应用的根目录

方法上,请求 URL 的第二级访问目录,与类上的使用@ReqquestMapping标注的一级目录一起组成访问虚拟路径

属性:

value:用于指定请求的URL。它和path属性的作用是一样的

method:用于指定请求的方式

params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样

例如:

params = {"accountName"},表示请求参数必须有accountName

params = {"moeny!100"},表示请求参数中money不能是100

@GetMapping:是一个组合注解,等价于@RequestMapping(method = RequestMethod.GET)

@PostMapping:是一个组合注解,等价于@RequestMapping(method = RequestMethod.POST)

@ResponseBody:告知SpringMVC框架,方法返回的字符串不是跳转是直接在http响应体中返回,不进行视图跳转,直接进行数据响应

@RequestHeader:可以获得请求头信息,相当于web阶段学习的request.getHeader(name)

@RequestHeader注解的属性如下:

value:请求头的名称

required:是否必须携带此请求头

@CookieValue:获得指定Cookie的值

@CookieValue注解的属性如下:

value:指定cookie的名称

required:是否必须携带此cookie

@RequestParam:

(1)不加@RequestParam前端的参数名需要和后端控制器的变量名保持一致才能生效

(2)不加@RequestParam参数为非必传,加@RequestParam写法参数为必传。但@RequestParam可以通过@RequestParam(required = false)设置为非必传。

(3)@RequestParam可以通过@RequestParam(“userId”)或者@RequestParam(value = “userId”)指定传入的参数名。(最主要的作用)

(4)@RequestParam可以通过@RequestParam(defaultValue = “0”)指定参数默认值

(5)如果接口除了前端调用还有后端RPC调用,则不能省略@RequestParam,否则RPC会找不到参数报错

@CrossOrigin

注意:

使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要进行扫描以便识别使用注解配置的类、字段和方法。

<!--注解的组件扫描-->

<context:component-scan base-package="com.包名"></context:component-scan>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/66299
推荐阅读
相关标签
  

闽ICP备14008679号