1. 程式人生 > >spring 中使用註解

spring 中使用註解

contex repos 使用註解 qualifier 說明 cast pri web .post

1、要在applicationContext.xml中配置掃描哪個包下的註解

<!-- 指定掃描cn.itcast.bean報下的所有類中的註解.
     註意:掃描包時.會掃描指定報下的所有子孫包
 -->
<context:component-scan base-package="cn.itcast.bean"></context:component-scan>

上面這個配置說明只掃描cn.itcast.bean包以及子包中的註解

2、註解說明(實體類上的註解)

package cn.itcast.bean;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy; import javax.annotation.Resource; import javax.xml.ws.RespectBinding; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; //<bean name="user" class="cn.itcast.bean.User" /> //@Component("user") // @Service("user") // service層
// @Controller("user") // web層 @Repository("user")// dao層 //指定對象的作用範圍 @Scope(scopeName="singleton") public class User { private String name; @Value("18") private Integer age; //@Autowired //自動裝配 //問題:如果匹配多個類型一致的對象.將無法選擇具體註入哪一個對象. //@Qualifier("car2")//使用@Qualifier註解告訴spring容器自動裝配哪個名稱的對象 @Resource(name="car")//手動註入,指定註入哪個名稱的對象 private Car car; public Car getCar() { return car; } public void setCar(Car car) { this.car = car; } public String getName() { return name; } @Value("tom") public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @PostConstruct //在對象被創建後調用.init-method public void init(){ System.out.println("我是初始化方法!"); } @PreDestroy //在銷毀之前調用.destory-method public void destory(){ System.out.println("我是銷毀方法!"); } @Override public String toString() { return "User [name=" + name + ", age=" + age + ", car=" + car + "]"; } }

@Component:這個註解一般是放在實體類上的相當於applicationContext.xml中的配置 <bean name="user" class="cn.itcast.bean.User" />

@Service:一般註解在service層中

@Controller:一般註解在web層

@Repository:一般註解在dao層

@Scope(scopeName="singleton"):指定對象的作用範圍,prototype(多例)和singleton(單例)

上面這些是註解在javaEE中類上的,名字是為了區分在哪個層,並沒有具體的功能,每個層上都可以寫相同的註解,但是不推薦這樣做。

3、註解說明(屬性或者方法上的註解)

public class User {
    private String name;
    @Value("18")
    private Integer age;
    
    //@Autowired //自動裝配
    //問題:如果匹配多個類型一致的對象.將無法選擇具體註入哪一個對象.
    //@Qualifier("car2")//使用@Qualifier註解告訴spring容器自動裝配哪個名稱的對象
    
    @Resource(name="car")//手動註入,指定註入哪個名稱的對象
    private Car car;
    
    public Car getCar() {
        return car;
    }
    public void setCar(Car car) {
        this.car = car;
    }
    public String getName() {
        return name;
    }
    @Value("tom")    
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @PostConstruct //在對象被創建後調用.init-method
    public void init(){
        System.out.println("我是初始化方法!");
    }
    @PreDestroy //在銷毀之前調用.destory-method
    public void destory(){
        System.out.println("我是銷毀方法!");
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + ", car=" + car + "]";
    }
    
}

@Value:註解在屬性上(基礎屬性,不是指對象屬性)目的是為了賦初值

@Resource(name="car"):對象屬性註解,手動註入,指定註入哪個名稱的對象

@Autowired:自動裝配,問題:如果匹配多個類型一致的對象.將無法選擇具體註入哪一個對象.

@Qualifier("car2"):使用@Qualifier註解告訴spring容器自動裝配哪個名稱的對象

@PostConstruct :在對象被創建後調用.init-method

@PreDestroy:在銷毀之前調用.destory-method

spring 中使用註解