天天看點

java 注解屬性_Java Spring-注解進行屬性注入

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">