5、自动装配

5.1、Spring标签

Autowired标签的作用

1、通过autowired标签可以让spring自动的把属性需要的对象从容器中找出来,并注入到对象

2、autowired标签可以放在字段或者setter方法上面

3、使用autowired标签可以注入一些spring内置的重要对象,比如BeanFactory,ApplicationContext;

4、默认情况下,@Autowired标签必须要能找到对应的对象,否则报错;通过required=false来避免这个问题@Autowired(required=false)

5、第三方程序:spring3.0之前,需要手动配置@Autowired解析程序:spring就会自动的加入针对@Autowired标签的解析程序<context:annotation-config />

6、@Autowired找bean的方式:

​ ①首先按照依赖对象的类型找;如果找到,就是用setter或者字段直接注入

​ ②如果在Spring上下文中找到多个匹配的类型,再按照名字去找;如果没有匹配,报错

​ ③可以通过使用@Qualifier("other")标签来规定依赖对象按照bean的id+类型去找

5.2、J2EE标签

@Resource标签:

1.Resource标签是JavaEE规范的标签、

2、Resource标签也可以作用于字段或者setter方法

3、也可以使用@Resource标签注入一些spring内置的重要对象,比如BeanFactory.ApplicationContext

4、Resource必须要求有匹配的对象

5、Resource标签找bean的方式

​ ①首先按照名字去找,如果找到,就使用setter或者字段注入

​ ②如果按照名字找不到,再按照类型去找,但如果找到多个匹配类型则会报错

​ ③可以直接使用name属性指定bean的名称;但是,如果指定的name,就只能按照name去找,如果找不到,就不会再按照类型去找;

5.3、使用注解来化解配置

1、使用标签来完成IoC,就必须有IoC标签的解析器

​ 使用context:component-scan来扫描spring需要管理的bean

​ base-package就告诉spring去哪些包及其子包里去扫描bean,如果有多个包需要被扫描;只需要用逗号隔开多个包即可

​ <context:component-scan base-package="cn.org.kingdom.service,cn.org.kingdom.dao" />

2、标注Bean的注解:@Component

默认情况,直接使用类的名字(首字母小写作为bean的名字), 如果要修改bean的名称;直接使用value属性来重新定义bean的名称

@Component("otherbean")

public class OtherBean {}

3、使用@Component的限制:

①不能运用到静态工厂方法和实例工厂方法,但是可以使用到FactoryBean;

②对于没有源代码的类(框架内部的预定义类),只能用XML配置;

4、bean组件分类

@Service用于标注业务层组件

@Controller用于标注控制层组件(如struts中的action)

@Repository用于标注数据访问组件,即DAO组件

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

5、指定bean的作用域:@Scope("prototype")

6、初始化和销毁方法

<bean init-method="init" />

@PostConstruct

public void init() {}

<bean destory-method="destory" />

@PreDestroy

public void destory() {}

posted @ 2021-04-09 09:10  Mirindasky  阅读(53)  评论(0编辑  收藏  举报