您的位置:首页 > 编程语言 > Java开发

spring 使用注解自动装配和自动扫描机制

2017-07-21 17:24 288 查看
原文链接:http://blog.sina.com.cn/s/blog_89eefb440101di0g.html

1.前提条件  在配置文件applicationContext.xml中添加context:annotation-config标签

xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd ">

2.自动装配属性实例。
使用@Autowired或@Resource注解方式进行装配,这两个注解的区别是:
@Autowired默认按类型装配,@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
强烈建议 放弃@Autowire 使用@Resource 原因 spring支持标准
@Resource 表示自动装配
@PostConstruct 表示初始化
@PreDestroy 表示销毁时执行该注解的方法
使用方式:可以用来标注在字段或属性的setter方法上.如果标注在字段上,则可以省略掉该属性的getter和setter方法。
同时
所要注入实例bean的名称可以通过@Resource的name属性指定,如果没有指定name属性,
1.当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象
2.当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。

3.spring自动扫描机制
spring2.5为我们引入了组件自动扫描机制,它可以在classPath路径底下寻找标注了@Component、@Service、@Controller、@Repository注解的类,并把这些类纳入进spring容器中管理。它的作用和在xml文件中使用bean节点配置组件是一样的。
也就是要spring自动扫描机制只会查找指定类路径下包含@Component、@Service、@Controller、@Repository这四种注解的类。
要使用自动扫描机制,我们需要打开以下配置信息:
1、引入context命名空间 需要在xml配置文件中配置以下信息: 同上先引入context 命名空间,同时
2、在配置文件中添加context:component-scan标签
其中base-package为需要扫描的包(含子包)。
2.为需要被扫描的类添加相应的注解,注解的类型有以下几种:
@Service用于标注业务层组件、
@Controller用于标注控制层组件(如struts中的action)、
@Repository用于标注数据访问组件,即DAO组件。
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
 这四种注解仅仅是角色不同,但实质都一样。

3.在使用注解时,为组件设置初始化和销毁方法:
在添加注解的相应的类中,如果想初始化或销毁某个方法,我们可以直接在方法上添加注解,如下:
@PostConstruct
public void addItem() {
System.out.println("初始化方法");
}
@PreDestroy
public void testItem() {
System.out.println("释放资源");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring 自动扫描