springIOC声明Bean的方式
属性声明
构造器声明
P名称空间
Bean之间的依赖引用
内部bean
</property>
集合属性注入
root
123
util名称空间
<ref bean="book"/>
<ref bean="book2"/>
<ref bean="book3"/>
级联属性赋值
factoryBean工厂
//框架提供了FactoryBean接口,支持项目功能扩展.
//框架利用FactoryBean接口的实现类,来集成第三方框架.
public class MyBookFactoryBean implements FactoryBean{ @Override
public Book getObject() throws Exception {
return new Book(111,"XXX",33.3);
}
@Override
public Class<?> getObjectType() {
return Book.class;
}
@Override
public boolean isSingleton() {
return true; //true表示单例,false表示多例
}
}
<bean id="book8" class="com.atguigu.spring.factory.MyBookFactoryBean"></bean>
模板Bean声明
Bean的依赖
Bean的作用域
Bean对象的初始化和销毁方法
properties文件
基于注解的声明
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:include-filter type="assignable" expression="com.atguigu.component.service.UserService"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="assignable" expression="com.atguigu.component.service.UserService"/>
Autowired注解特别说明
/*
首先根据byType进行装配:
如果只查找到一个,就直接装配;
如果查找到多个,报错:
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException:
No qualifying bean of type [com.atguigu.component.service.UserService] is defined:
expected single matching bean but found 2: userServiceImpl,userServiceImpl2
如果多个都希望被注解:
可以采用数组或集合(泛型)进行装配.
根据byType无法确定某一个Bean进行装配时,再根据byName进行装配.
如果根据byType查找到的多个Bean对象的id名称与当前对象的属性名称:
一致,则装配这个一致名称的Bean对象;
不一致,可以借助于@Qualifier来指定其中的某个Bean进行装配.
如果指定的名称在,则装配;
如果指定的名称不在,报错;
如果根据byName也无法装配,采用required=false放弃装配.
*/
@Autowired(required=false)
@Qualifier(value=”userServiceImpl3”)
另外如果一个接口有多个实现类时,在使用autowired注入时,可以通过泛型的方式去制定需要注入的具体实现类
还没有评论,来说两句吧...