注解:spring-基于注解的配置

本文内容纲要:注解:spring-基于注解的配置

基于注解的配置

除了采用采用xml来配置bean之外,也可以采用注解的方式来定义,注册,加载bean。

注解的方式在spring中默认时不开启的,所以需要在xml文件中进行配置启用

注解的启动方式有下面两种配置:

下面的配置既可以在所有类中启用注解

<context:annotation-config/>

还可以在部分你需要的类中启用注解,这个可以包含一些类,也可以不去扫描一些类

具体的在另外一篇博客事物管理中有讲到。

<context:component-scan base-package="com.b505.common.service.impl" />

@Required

应用于bean的setter方法,当在setter方法上加上这个注释后,表明必须在xml中配置这个属性,不然会抛BeanInitializationException异常

在beans.xml中配置启动注释的两个方式二选一,在本例中,都不配置的话,程序照样不会出错,这是因为这样就不会启用注解配置了

而是xml配置,

<context:annotation-config/> 

<!-- 这两个配置2选1 -->

<!-- <context:component-scan base-package="com.test.Student" /> -->

<bean id="student" class="com.test.Student">

<property name="name" value="zara"></property>

<property name="age" value="11"></property>

</bean>

Student.java实体类

public class Student {

private Integer age;

private String name;

@Required

public void setAge(Integer age) {

System.out.println("**setAge(Integer age) "+age);

this.age = age;

}

@Required

public void setName(String name) {

System.out.println("**setName(String name) "+name);

this.name = name;

}

@Autowired

setter方法上的@Autowired

在setter方法上加上@Autowored注解后,spring容器会试图以“byType”的方式去连接bean

这中间就涉及到一个问题,若是我们在bean中有多个相同的type的bean,会报错的。

beans.xml

<context:annotation-config/> 

<bean id="money1" class="com.test.Money1"></bean>

<bean id="student" class="com.test.Student">

<property name="name" value="zara"></property>

<property name="age" value="11"></property>

</bean>

Student.java

@Autowired

public void setMoney(Money money) {

System.out.println("**setMoney(Money money) "+money);

this.money = money;

}

在属性上面应用@Autowired

可以消除java代码中的setter方法,若是定义了setter方法,在注入bean时也不是通过这个setter方法的。

@Autowired

private Money money;

在构造函数上使用@Autowired

<context:annotation-config/>      

<bean id="student" class="com.test.Student">

</bean>

<bean id="money2" class="com.test.Money2"></bean>

Student.java

@Autowired

public Student(Money money){

System.out.println("***Student(Money money)");

this.money=money;

}

@qualifiler注释

beans.xml

在beans.xml中有两个类型相同的bean,money1和money2,当你需要注入时,就又能会不知道注入哪一个而抛异常,这时就用到@qualifiler注解了

<context:annotation-config/>  

<bean id="student" class="com.test.Student">

</bean>

<bean id="money1" class="com.test.Money1"></bean>

<bean id="money2" class="com.test.Money2"></bean>

Studen.java

这样指定了注入的bean为money2(id号)

@Autowired

@Qualifier("money2")

public void setMoney(Money money) {

System.out.println("**setMoney(Money money) "+money);

this.money = money;

}

spring Jsr-250注释

@Resource

他类似于遵循“by-name”的方式,找到id=“money2”的bean进行注入。

Student.java

@Resource(name="money2")

public void setMoney(Money money) {

System.out.println("**setMoney(Money money) "+money);

this.money = money;

}

参考文章:w3cschool教程

本文内容总结:注解:spring-基于注解的配置

原文链接:https://www.cnblogs.com/yanliang12138/p/9728809.html

以上是 注解:spring-基于注解的配置 的全部内容, 来源链接: utcz.com/z/296203.html

回到顶部