Spring学习笔记(二)-IOC基于注解
Spring学习笔记(二)-IOC基于注解
Spring配置文件配置
-
配置组件扫描器
-
<context:component-scan base-package="com.Xxx"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
-
扫描com.Xxx下的所有注解但是不包括Controller注解
-
扫描多个包:
-
配置多个组件扫描器
-
使用分隔符,分号或者逗号(;or,)
-
<context:component-scan base-package="com.Xxx.Xxx;com.Xxx.Xxx"/>
-
指定父包
-
Component
-
放置于类上,将该类放入容器
-
-
value即对应于id,在没有设置value时,默认给予的名称为类名首字母小写
-
@Repository:dao接口的注解
-
@Controller:controller控制器的注解
-
@Service:业务层的注解
-
-
本质都为@Component,只是别名,便于分类标记
-
属性赋值:
-
简单类型:
-
@Value,放置于属性定义(不需要set方法)或set方法上
-
读取外部属性配置文件
-
<context:property-placeholder location="classpath:JdbcDataSourceConfig.properties"/>
-
此时@Value中的值可以设置为外部文件中的数据:${"key"},相似于EL表达式
-
-
引用类型:
- @Autowired:由Spring提供的自动注入,默认为byType也支持byName,可以放置于属性(不需要set方法)或set方法上
- required属性:默认为true,Spring此时会在启动创建容器时就检查是否注入成功,失败时会终止程序,报错。设置为false时即使自动注入失败也会正常秩序程序,此时引用类型的值为null
- @Qualifer:从容器中寻找指定名称的对象,需要配合@Autowired使用
- @Resource:JDK提供,在不提供参数时。默认采用byName方式注入,在byName注入不成功时byType,位置为属性或set方法上,jdk1.8以上版本没有该注解,配置name属性时只使用byName方式注入
- @Autowired:由Spring提供的自动注入,默认为byType也支持byName,可以放置于属性(不需要set方法)或set方法上
-