一:使用註解配置Spring
1.導包四個基礎包加上一個日誌包,這裏還需要加上一個aop包
2.爲主配置文件引入新的命名空間(約束)
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd ">
需要用到約束文件夾中的context。
3、開啓使用註解代理配置文件
- 將對象注入到容器
- 修改對象作用範圍
- 值類行注入:有兩種方法,一種是加在變量的上:
另一種是加在set方法上:
對象注入:自動裝配,手動注入
4.在類中完成註解使用配置
package cn.itcast.bean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("car")
public class Car {
@Value("bmw")
private String name;
@Value("red")
private String color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public String toString() {
return "Car [name=" + name + ", color=" + color + "]";
}
}
package cn.itcast.bean;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
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></bean>
@Component("user")
@Scope(scopeName="prototype")
public class User {
@Value("ssl")
private String name;
@Value("20")
private Integer age;
//@Autowired//自動裝配,如果多個類型一致的對象,那麼將無法選擇具體講哪一個對象注入。
//@Qualifier("car2")
@Resource(name="car2")
private Car car;
@PostConstruct//在對象被創建後調用相當於 init-method
public void init(){
System.out.println("初始化方法");
}
@PreDestroy//在對象銷燬之前調用 相當於init-destory
public void destory() {
System.out.println("我是銷燬方法");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", car=" + car + "]";
}
}
package cn.itcast.a_annotation;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.itcast.bean.User;
public class Demo {
@Test
public void fun1(){
//創建容器對象
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//像容器要User對象
User user1 = (User) ac.getBean("user");
User user2 = (User) ac.getBean("user");
System.out.println(user1==user2);
//打印USer對象
System.out.println(user1);
}
}
二:Spring中的aop(其實就是讓spring aop幫我們生成代理對象)
前期準備
1.安裝STS插件:
要注意一點,大家在下載 壓縮包的時候要選擇後最爲updateset的。不然可能會報錯。還有要選擇與自己eclipse相對應的版本安裝。
可以在我的網盤裏我安裝好的eclipse,也有Spring集成好的,也有壓縮包,可以自己安裝。
鏈接:https://pan.baidu.com/s/13b8vfA7jOhrQalzpX1c2Eg
提取碼:dj19
2.spring與junit測試
1、導包:
四個基礎包+日誌包+test包
2.配置註解
package cn.itcast.b_test;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import cn.itcast.bean.User;
@RunWith(SpringJUnit4ClassRunner.class)//幫我們創建容器
@ContextConfiguration("classpath:applicationContext.xml")//指定創建容器使用哪個配置文件
public class Demo {
@Resource(name="user")
private User u;
@Test
public void fun1(){
System.out.println(u);
}
}
3.代理: