一衅谷、Spring注入方式總結(jié)
1.屬性setter注入(當(dāng)前類需擁有無參構(gòu)造方法)
name:當(dāng)前類的屬性名稱
ref:注入類型為對(duì)象
value:注入類型為字符串或整型數(shù)值
屬性注入
內(nèi)部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.構(gòu)造器Constructor注入
- value:注入類型為字符串或整型數(shù)值
- ref:注入類型為對(duì)象
- type:注入元素的類型
- name:注入元素所對(duì)應(yīng)的屬性名稱
- index:注入元素在構(gòu)造方法參數(shù)列表的下標(biāo)位置
構(gòu)造器注入
構(gòu)造器注入
3.接口注入
二丽涩、Spring注入類型總結(jié)
- value:字符串或整型數(shù)值
- ref:對(duì)象
- list、set拄显、map苟径、props集合,采用標(biāo)簽
三躬审、Spring常用注解總結(jié)(注解名稱棘街,使用位置,作用)
-
@Autowired:按照類型自動(dòng)注入承边。
1.用于所要注入的組件屬性的上方遭殉,可以省略setter方法。
@Autowired private IRepository repository;
2.用于setter方法上方
@Autowired public void setRepository(IRepository repository) { this.repository = repository; }
-
@Qualifier:與Autowired搭配使用博助,按照名稱自動(dòng)注入
@Autowired @Qualifier(value = "excelRepository") private IRepository repository;
-
@Resource:javax包下的注解险污,默認(rèn)按照類型自動(dòng)注入
@Resource private IRepository repository;
使用name屬性按照名稱注入
@Resource(name = "fileRepository") private IRepository repository;
@Component:聲明當(dāng)前類為一個(gè)Spring Bean
@Controller:聲明當(dāng)前類為一個(gè)Spring Bean,同時(shí)具有控制層組件的身份
@Service:聲明當(dāng)前類為一個(gè)Spring Bean,同時(shí)具有業(yè)務(wù)層組件的身份
@Repository:聲明當(dāng)前類為一個(gè)Spring Bean蛔糯,同時(shí)具有數(shù)據(jù)訪問層組件的身份
@Primary:用于聲明當(dāng)前類為主要的Bean
@Configuration:用于聲明當(dāng)前類為Spring的配置類
@Bean:該注解用于標(biāo)注創(chuàng)建bean的方法
@Scope:設(shè)置當(dāng)前Bean的作用域
四拯腮、Spring Bean元數(shù)據(jù)的配置方式
1.基于XML
2.基于注解
3.基于JavaConfig配置類
// 該注解用于標(biāo)注創(chuàng)建bean的方法
@Bean
public MaterialController materialControllerBean(){
MaterialController materialController = new MaterialController();
// 使用屬性注入(屬性注入業(yè)務(wù)層組件)
materialController.setMaterialService(materialServiceBean());
return materialController;
}
@Bean
public MaterialController materialControllerBean(){
// 使用構(gòu)造器注入
return new MaterialController(materialServiceBean());
}