14.Spring-註解替代xml配置
阿新 • • 發佈:2018-12-11
QQ群:Java資料共享群 59174518
新增jar包,和加入約束.然後在配置檔案裡面填在註解的掃描
package vc.helloworld.SpringBean;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework. context.annotation.Scope;
import org.springframework.stereotype.Service;
//註解裡面的值就是bean標籤裡面的name
@Service("userYaDang")
// <bean name="user" class="vc.helloworld.SpringBean.UserYaDang"> 這個註解就相當於這樣
// @Controller("userYaDang")
// @Component("userYaDang")
// @Repository("userYaDang")
// @Scope註解跟bena標籤裡面的scope屬性一樣的功能,設定這個物件在ApplicationContext容器裡面是不是單例的還是多例的
@Scope(scopeName = "singleton") // 單例是預設值,如果是單例的話就不用加了
public class UserYaDang {
// 給name屬性注入一個叫 亞當的名字. 就是bean裡面的<property name="name" value="亞當"></property>
// 但是這樣破壞了封裝性
@Value("亞當")
private String name;
private Integer age;
// 生命週期方法的新增
@PostConstruct // 這個註解新增之後,這個物件在建立之前,呼叫這個方法
public void init() {
System.out.println("生命週期的init方法.");
}
// 這兩個方法必須新增Serlvet的依賴.
@PreDestroy // 這個註解新增之後,這個物件在銷燬之後,呼叫這個方法
public void destory() {
System.out.println("生命週期的銷燬方法");
}
// 引用型別的賦值, 首先要把這個要引入的物件新增在容器中
// 使用@Autowire就可以把這個UserXiaWa注入過來
// 翻譯過來就是自動裝配,是根據型別來檢測來找物件,如果檢測到了,就把這個物件賦值給這裡
// 如果匹配多個型別一致的物件,將無法選擇具體注入哪個物件.
// @Qualifier("bean的name") 可以使用這個註解來解決
// @Resource(name="bean的name") 直接使用這個註解可以指定那個名稱的物件
@Autowired
private UserXiaWa userXiaWa;
@Override
public String toString() {
return "UserYaDang [name=" + name + ", age=" + age + ", userXiaWa=" + userXiaWa + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 這是第二種屬性值注入方式,@Value註解讓在set方法上面
@Value("22")
public void setAge(Integer age) {
this.age = age;
}
public Integer getAge() {
return age;
}
public UserXiaWa getUserXiaWa() {
return userXiaWa;
}
public void setUserXiaWa(UserXiaWa userXiaWa) {
this.userXiaWa = userXiaWa;
}
public UserYaDang(String name, Integer age, UserXiaWa userXiaWa) {
super();
this.name = name;
this.age = age;
this.userXiaWa = userXiaWa;
}
public UserYaDang() {
super();
System.out.println("亞當建立完畢...");
}
}