20201124_陈宇_

日志

学习总结:

常用注解 :

@Controller @Service @Repository

​ 它们三个注解都是针对一个 @Component 的衍生注解,他们的作用及属性都是一模一样的。 他们只不过是提供了更加明确的语义化

​ @Controller:一般用于表现层的注解

​ @Service:一般用于业务层的注解

​ @Repository:一般用于持久层的注解

​ @Autowired:

​ 作用:自动按照类型注入。当使用注解注入属性时,set 方法可以省略。它只能注入其他 bean 类型(spring中 有的)。当有多个类型匹配时,使用要注入的对象变量名称作为 bean 的 id,在 spring 容器查找,找到 了也可以注入成功。找不到就报错

​ @Qualifier:

​ 作用:在自动按照类型注入的基础之上,再按照 Bean 的 id 注入。它在给字段注入时不能独立使用,必须和 @Autowired 一起使用;但是给方法参数注入时,可以独立使用

​ 属性: value:指定 bean 的 id

​ @Resource:

​ 作用: 直接按照 Bean 的 id 注入

​ 属性: name:指定 bean 的 id

​ @Value

​ 作用:注入基本数据类型和 String 类型数据的

​ 属性:value:用于指定值

@Autowired和@Resource的区别:

​ spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是 @Resource、@PostConstruct以及@PreDestroy。

​ @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。@Resource有两个属性是比较重要的,分是name和type,Spring将 @Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用 name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略

​ @Resource装配顺序:

​ 1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常

​ 2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常

​ 3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常

​ 4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配

​ 区别:

image-20201124223228630

​ @Scope

​ 作用:指定 bean 的作用范围

​ 属性:value:指定范围的值

​ 取值:singleton prototype request session globalsession

​ @PostConstruct:

​ 作用:用于指定初始化方法

学习心得:

​ 今天学习了spring框架的注解开发,个人感觉注解开发从不步骤上来说,要比配置xml更简单,操作更加简化,但是理解起来好像要稍微难一点,配置xml的方式虽然稍微复杂一点,找出错误感觉也要更容易一些,但注解也挺不错的吧,今天看了一些以前懂东西,感觉有些东西都已经忘了,比如反射,感觉晓得有这个东西,但是具体内容已经不清楚了。。。感觉有时间还是得复习一下前面的知识。

标签

评论


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1