一、信息注入:
1、对象注入:<property name="属性名" ref="要注入的Bean的id">
2、值注入:<property name="属性名" value="值"></property>
3、注入Spring表达式(#{id.key})、集合注入:
注意:util命名空间需要引入才能用(如下图):
二、组件扫描技术 (Spring2.5版本之后才有,即JDK5.0才有)
可以自动扫描指定报下的所有类,如果类定义中存在约定注解标记会将该组件转化成<bean>定义,纳入Spring容器中。
1、使用方法:
--开启组件扫描,指定扫描路径(路径可长可短)
--类定前使用一下注解标记之一即可:@Component,@Service,@Controller,@Repository
2、注解标记:
@Component:无法区分时使用(各处可以用)
@Service:用在Service组件上
@Controller:建议用在Action,Controller组件上
@Repository:用在DAO上面
@Scope("prototype"):设置模式为原型(注解默认是单例)
@Resource:--》默认按照变量名称找 --》失败再按类型(JAVA EE提供)
@Autowired:跟@Resource相反,先默认类型匹配注入,失败再按变量名称匹配注入(Spring提供)
@Inject:(第三方提供)用ID查找要与@Named(“id”)一起使用
注意:@Resource和@Autowired要求必须注入一个符合的对象,没有则抛出异常。@Autowired(required=false)来不抛异常,而@Resource没有这种操作。
--如果存在注入关系,可以使用下面注解标记在变量定义或setter方法前使用@Resource,可以按类型注入和按名称注入,如下图
注意:加了注解之后,可以省去setter方法
3、注入Spring表达式:
--先配置:<util:properties id="dbParam" location="classpath:org/lhm/config/db.properties" />
--在在变量前加上注解:@Value("#{dbParam.userName}")
--将组建扫描到Spring容器(用@Service或者@Component)