一、xml的表头约束
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!--告知spring需扫描的包-->
<context:component-scan base-package="需扫描的包名"></context:component-scan>
<!--配置bean-->
<bean id="service" class="com.service.impl.ServiceImpl">
<!--构造函数注入-->
<constructor-arg name="dao" ref="dao"></constructor-arg>
</bean>
<bean id="dao" class="com.dao.impl.DaoImpl">
<!--set方法注入-->
<property name="queryRunner" ref="runner"></property>
</bean>
<!--P命名空间注入-->
<bean id="user" class="com.entity.User" p:name="张三" p:age="13"/>
</beans>
二 、依赖注入(DI)
-
构造函数注入
使用<constructor-arg></constructor-arg>
参数
在被注入类中添加构造方法,例:public ServiceImpl(DaoImpl dao) { this.dao=dao; }
**注意:**构造函数注入 必须将所有构造函数内的参数赋值 -
set方法注入
使用<property></property>
参数
在被注入类中添加set方法,例:public void setQueryRunner(QueryRunner queryRunner) { this.queryRunner=queryRunner; }
**注意:**set方法注入 可以不必将所有的参数赋值,未赋值的将采用默认值(int:0 String:null)
增:P命名空间注入
引入约束:xmlns:p="http://www.springframework.org/schema/p"
和set方法注入类似,需要在被注入类中添加set方法 -
注解注入
@Autowired注解是按类型装配依赖对象
@Qualifier注解 用来消除依赖注入冲突的(按名称装配)
@Resource注解默认按名称装配(有多个时,再按类型装配)
可以说@Resource=@Autowired+@Qualifier
三、AOP
。。。待续.....