Spring:自动装配及注解

一.自动装配

自动装配:是使用spring满足bean依赖的一种方法

spring会站在应用上下文中为某个bean寻找其依赖的bean

spring中bean有三种装配机制分别是:

​ 1.在xml中显式配置

​ 2.在java中显式配置

​ 3.隐式的bean发现机制和自动装配

自动装配的方式

1.autowire -byname(按名称自动装配)

<bean id="people" class="com.zh.pojo.People" autowire="byName">

2.auto-bytpe(按类型自动装配)

<bean id="people" class="com.zh.pojo.People" autowire="bype">

使用注解:

##注解支持约束
  <context:annotation-config/>
    <!--扫描包下所有组件-->
      <context:component-scan base-package="com.zh"/>
##注解说明
自动装配:
-@Autowired:通过类型,名字
  如果Autowored不能唯一自动装配属性,则需要通过@Qualifier(value="");
-@Nullable:字段标记了这个注解,说明这个字段可以为空
-@Resource:自动装配通过名字,类型


-compoent:组件,放在类上,说明这个类被spring管理了,就是bean
   compoent衍生注解,在web开发中,会按照MVC三层架构分层:
-dao 【@Repository】
-service 【@Service】
-controller 【@Controller】
注:这是个注解的功能都是一样的,都代表将某个类注册在Spring中,装配Bean

作用域:
-@Scope("singleton")//prototype


小结:

xml与注解:

xml更加万能,适用于任何场合,维护更加方便

注解 不是自己的类使用不了,维护相对复杂

xml与注解最佳实践:
xml用来管理bean
注解只负责完成属性的注入
在使用过程中,只需要注意一个问题:必须让注解生效,就需要开启注解的支持

@Autowired与@Resourse的区别:

都是用来自动自动装配的,都可以放在属性字段上

@Autowired默认通过bytype方式实现,然后byname,而且必须要有这个对象

@Resourse通过默认byname的方式实现,如果找不到名字,则通过bytype实现,如果两个都找不到,则报错
执行顺序不同:@Autowired默认通过bytype的方式实现。

​ @Resource默认通过byname的方式实现

Bean的作用域:

单例模式:(Spring默认机制)一个bean表示一个对象

<bean id="user" class="com.zh.pojo.User" p:age="18" p:name="zh" scope="singleton"/>

原型模式:每次从容器中get的时候,都会产生一个新对象

<bean id="user2" class="com.zh.pojo.User" c:age="19" c:name="zfl" scope="prototype"/>

其余的request,session,application这些只能在web开发中使用

原文地址:https://www.cnblogs.com/zh93/p/12861221.html