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方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配
区别:
@Scope:
作用:指定 bean 的作用范围
属性:value:指定范围的值
取值:singleton prototype request session globalsession
@PostConstruct:
作用:用于指定初始化方法
学习心得:
今天学习了spring框架的注解开发,个人感觉注解开发从不步骤上来说,要比配置xml更简单,操作更加简化,但是理解起来好像要稍微难一点,配置xml的方式虽然稍微复杂一点,找出错误感觉也要更容易一些,但注解也挺不错的吧,今天看了一些以前懂东西,感觉有些东西都已经忘了,比如反射,感觉晓得有这个东西,但是具体内容已经不清楚了。。。感觉有时间还是得复习一下前面的知识。
近期评论