2017-11-06 21:19:43
一、Spring的注解裝配Bean
Spring2.5 引入使用注解去定義Bean
@Component 描述Spring架構中Bean
Spring的架構中提供了與@Component注解等效的三個注解
@Repository 用于對DAO實作類進行标注(dao層)
@Service 用于對Service實作類進行标注(service層)
@Controller 用于對Controller實作類進行标注(web層)
//因為隻有一個屬性value,是以可以直接寫。一般需要value="..."
@Component("user")
public class User {
public void sayHello(){
System.out.println("Hello World.");
}
}
配置檔案:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
二、注解進行屬性注入
普通屬性:@Value(value="..."),這時候可以不寫setter方法
對象屬性:@Resource(name = "....")
//因為隻有一個屬性value,是以可以直接寫。一般需要value="..."
@Component("user")
public class User {
@Value(value="Spring")
private String s;
public void sayHello(){
System.out.println("Hello World.");
}
@Override
public String toString() {
return "User{" +
"s=‘" + s + ‘\‘‘ +
‘}‘;
}
}
三、XML和注解的混合使用
兩種方式結合:一般使用XML注冊Bean,使用注解進行屬性的注入
首先介紹一些其他的注解配置:
(1)配置 Bean 初始化方法和銷毀方法 :* init-method 和 destroy-method.
@PostConstruct 初始化
@PreDestroy 銷毀
@PostConstruct
public void setup(){
System.out.println("初始化...");
}
@PreDestroy
public void teardown(){
System.out.println("銷毀...");
}
(2) 配置 Bean 的作用範圍 :@Scope
@Component("user")
@Scope(value="prototype")
public class User {
@Value(value="Spring")
private String s;
public void sayHello(){
System.out.println("Hello World.");
}
@Override
public String toString() {
return "User{" +
"s=‘" + s + ‘\‘‘ +
‘}‘;
}
}
(3)使用Java類來進行配置資訊,在XML中掃描一下即可
@Configuration
public class BeanConfig {
@Bean(name = "car")
public Car showCar() {
Car car = new Car();
car.setName("長安");
car.setPrice(40000d);
return car;
}
@Bean(name = "product")
public Product initProduct() {
Product product = new Product();
product.setName("空調");
product.setPrice(3000d);
return product;
}
}
混合使用範例:
public class Person {
@Autowired
@Qualifier("car")
private Car car;
@Autowired
@Qualifier(value = "plane")
private Plane plane;
@Override
public String toString() {
return "Person{" +
"car=" + car +
", plane=" + plane +
‘}‘;
}
}
配置檔案:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
四、內建Junit測試
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring-config.xml")
public class spring6 {
@Autowired
@Qualifier("person")
private Person p;
@Test
public void demo(){
System.out.println(p);
}
}
配置檔案:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">