Spring配置进阶
Spring 容器提供配置元数据有三种方式
- XML配置文件。
- 基于注解的配置。
- 基于java的配置。
一、自动装配
应用程序上下文为你找出依赖项的过程,Spring会在上下文中自动查找,并自动给bean装配与其关联的属性
Spring中实现自动装配的方式有两种:
- XML文件
- 注解
(1)通过xml文件实现自动装配
1、通过xml文件实现自动装配
xml配置文件中的
<bean>
要配置autowire
属性
autowire属性值:
模式 | 描述 |
---|---|
no | 这是默认的设置,它意味着没有自动装配,你应该使用显式的bean引用来连线。你不用为了连线做特殊的事。, |
byName | 由属性名自动装配。Spring 容器看到在 XML 配置文件中 bean 的自动装配的属性设置为 byName。然后尝试匹配,并且将它的属性与在配置文件中被定义为相同名称的 beans 的属性进行连接。 |
byType | 由属性数据类型自动装配。Spring 容器看到在 XML 配置文件中 bean 的自动装配的属性设置为 byType。然后如果它的类型匹配配置文件中的一个确切的 bean 名称,它将尝试匹配和连接属性的类型。如果存在不止一个这样的 bean,则一个致命的异常将会被抛出 |
constructor | 类似于 byType,但该类型适用于构造函数参数类型。如果在容器中没有一个构造函数参数类型的 bean,则一个致命错误将会发生。 |
1)byName属性值
Spring会根据class属性找到实体类,然后查询实体类中所有setter方法的名字,根据setter方法后面的名字,再到配置文件中寻找一个与该名字相同id的Bean,注入进来
autowire属性赋值>>class找到对应类>>查询对应setter方法>>对应id的Bean对象
<bean id="iDeptDao" class="org.example.dao.impl.DeptImpl" autowire="byName"/>
2)byType属性值
Spring会自动寻找一个与该属性类型相同的Bean,注入进来
<bean id="iDeptService" class="org.example.service.impl.DeptServiceImpl autowire="byType">
(2)通过注解实现自动装配
二、Spring注解分类
1、使用注解前的准备:
//spring-config.xml文件配置数据
<!-- 加入扫描包,配置根路径,查找根路径下使用的注解--> <context:component-scan base-package="org.example"/>
以注解为主,XML为辅。
@Component(组件),@Service(服务),@Controller(控制器),@Repository(*/rɪˈpɑːzətɔːri/*数据仓库)
1、Spring类注解
@Component、@Repository、@Controller、@Service以及JavaEE6的@ManagedBean和@Named注解,都是添加在类上面的类级别注解
Spring容器根据注解的过滤规则扫描读取注解Bean定义类,并将其注册到Spring IoC容器中。
1、使用asm技术扫描.class文件,并将包含@Component、@Controller、@Service、@Repository或者其他自定义的的bean注册到beanFactory中,
- @Component : 通配
- @Repository:用于声明DAO层的
- @Service:用于业务层
- @Controller:用于