一、Spring注入方式总结
1.属性setter注入(当前类需拥有无参构造方法)
name:当前类的属性名称
ref:注入类型为对象
value:注入类型为字符串或整型数值
属性注入
内部bean
🍖 特殊的注入形式:使用P命名空间:
<!-- 首先加入命名空间配置 -->
xmlns:p="http://www.springframework.org/schema/p"
<bean id="dataServiceBean" class="com.apesource.service.DataService"
p:num="2" p:repository-ref="excelRepositoryBean">
</bean>
🍗 list、set、map、props集合类型的注入:集合类型的注入
2.构造器Constructor注入
- value:注入类型为字符串或整型数值
- ref:注入类型为对象
- type:注入元素的类型
- name:注入元素所对应的属性名称
- index:注入元素在构造方法参数列表的下标位置
构造器注入
构造器注入
3.接口注入
二、Spring注入类型总结
- value:字符串或整型数值
- ref:对象
- list、set、map、props集合,采用标签
三、Spring常用注解总结(注解名称,使用位置,作用)
-
@Autowired:按照类型自动注入。
1.用于所要注入的组件属性的上方,可以省略setter方法。
@Autowired private IRepository repository;
2.用于setter方法上方
@Autowired public void setRepository(IRepository repository) { this.repository = repository; }
-
@Qualifier:与Autowired搭配使用,按照名称自动注入
@Autowired @Qualifier(value = "excelRepository") private IRepository repository;
-
@Resource:javax包下的注解,默认按照类型自动注入
@Resource private IRepository repository;
使用name属性按照名称注入
@Resource(name = "fileRepository") private IRepository repository;
@Component:声明当前类为一个Spring Bean
@Controller:声明当前类为一个Spring Bean,同时具有控制层组件的身份
@Service:声明当前类为一个Spring Bean,同时具有业务层组件的身份
@Repository:声明当前类为一个Spring Bean,同时具有数据访问层组件的身份
@Primary:用于声明当前类为主要的Bean
@Configuration:用于声明当前类为Spring的配置类
@Bean:该注解用于标注创建bean的方法
@Scope:设置当前Bean的作用域
四、Spring Bean元数据的配置方式
1.基于XML
2.基于注解
3.基于JavaConfig配置类
// 该注解用于标注创建bean的方法
@Bean
public MaterialController materialControllerBean(){
MaterialController materialController = new MaterialController();
// 使用属性注入(属性注入业务层组件)
materialController.setMaterialService(materialServiceBean());
return materialController;
}
@Bean
public MaterialController materialControllerBean(){
// 使用构造器注入
return new MaterialController(materialServiceBean());
}