Spring笔记---自动装配以及注解开发---2021-7-24

自动装配

autowired=""

  • byName:会自动在容器上下文中找,和自己全限定名路径下的set方法后面的值对应的bean的ID
  • byType:会自动在容器上下文中找,和自己对象属性(比如在people类文件中,有以下内容,即为属性),类型相同的bean的ID
public class people{
    private Cat cat;
    pricate Dog dog;
}

自动装配的注解实现

  • @Nullable 表明这个属性可以为null
  • @Autowired Required属性默认true,如果手动的设置为false,说明这个对象可以为null,否则不允许为空
  • @Qualifier(value=“dog222”)//显式的将一个属性和Ioc容器中的一个id为dog222的bean绑定
    • private Dog dog;
    • 用该注解配合@Autowired去使用
  • @Primary
  • @Resource:Java的注解,没有spring高级
    • 先通过名字去查找
    • 再通过类名去查找
    • @Resource(name=“cat1”)
    • private Cat cat;

导入注解支持(开启Ioc自动装配的注解)

<context:annotaion-config/>

<bean id="people" class="com.simon.entity.People"/>
<bean id="dog" class="com.simon.entity.Dog"/>
<bean id="cat" class="com.simon.entity.Cat"/>

@Autowired

  • 在属性上用

  • 或者在set方法上使用

public class people{
	@Autowired
    @Qualifier(value="cat333")
    private Cat cat;
    @Autowired
    @Qualifier(value="dog222")
    pricate Dog dog;
}

Spring注解开发(必须保证aop的包导入)

bean

指定要扫描的包
<context:component-scan base-package="com.simon.entity"/>
开启注解支持
<context:annotation-config/>

@Conponent

  • 添加在类名上

  • 等价于<bean id="user" class="com.simon.entity.User">

属性的注入

@Value

@Component
public class User{
    @Value("Simon")
    public String name;
}
  • 相当于

    <bean id="user" class="com.simon.entity.User">
    	<property name="name" value="Simon"/>
    </bean>
    

衍生的注解

  • @Component
    • @Repository 与@Component功能一样,都会在Spring容器中注册为一个Bean,一般用在Dao层
    • @Servcie 与@Component功能一样,都会在Spring容器中注册为一个Bean,一般用在Servcie层
    • @Controller 与@Component功能一样,都会在Spring容器中注册为一个Bean,一般用在Controller层

自动装配(见上面)

作用域

@Scope

@Scope("singleton")
public class User{
    
}

小结

  • xml更加万能,适用于任何场合

  • 注解—不是自己的类用不了,维护相对复杂,需要一个个文件的点进去查看

  • 最佳实现

    • xml用来管理bean
    • 注解只用来属性注入

使用注解,需要开启注解支持

指定要扫描的包
<context:component-scan base-package="com.simon.entity"/>
开启注解支持
<context:annotation-config/>
上一篇:Spring - 实例化与延迟实例化


下一篇:Spring04