Spring - @Autowired與@Resource

1、@Autowiredjava

spring2.5引入@Autowired 註解。用於對類的成員變量,方法及構造函數進行注入。取代了get、set方法: spring

// create and configure beans
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");

// retrieve configured instance
PetStoreService service = context.getBean("petStore", PetStoreService.class);

// use configured instance
List<String> userList = service.getUsernameList();

註解形式函數

@Autowired             默認byType形式
@Autowired @Qualifier("beanId")  使用byName形式
@Autowired( required=false)     使用byType形式,注入值不存在,能夠爲nullui

2、@Resourcethis

JSR-250 註解prototype

註解形式code

@Resource             默認byName形式
@Resource(name="loginService")   使用byName形式
@Resource(type="")         使用byType形式xml

注意:
@Resource 默認byName 注入。name能夠是字段名。當找不到匹配的bean才按類型裝配。對象

3、細節問題資源

@Autowired ( autowire屬性 )

byType       發現多個bean或沒有,拋異常
byName      指定名稱,沒有,拋異常
Contructor     沒有,拋異常
autodetect     決定默認狀況下,用byType仍是Contructor

@Resource

@Autowired 相似,不過@Resource 默認按照名稱式匹配,匹配不成功能夠按照類型匹配,固然若是指定了name,則只按名稱進行匹配。

@Service
使用組件掃描時,默認將使用此註解的類的第一字母小寫做爲bean的id生成bean。能夠使用@Service("myName"),指定要生成的bean的id。

@Scope
在配置bean時,能夠對其做用域進行限制。 默認爲singleton,單一實例。也能夠設置做用域爲 prototype,任意數量的對象實例。

<!-- A bean definition with singleton scope -->
<bean id="..." class="..." scope="singleton">
    <!-- collaborators and configuration for this bean go here -->
</bean>

除了,在配置文件中進行配置。還能夠使用註解:

@Service("userXxx")@Scope("prototype")

public class UserServiceImpl implements UserXxx {

……

}

在添加註解的相應的類中,若是想初始化或銷燬某個方法,咱們能夠直接在方法上添加註解,以下:

@PostConstruct

public void addItem() {

System.out.println("初始化方法");

}

``` @PreDestroy

public void testItem() {

System.out.println("釋放資源");

} ```

原文

相關文章
相關標籤/搜索