1.@Autowired
可以对成员变量、方法和构造函数进行自动配置(根据类型进行自动装配)
public class UserImpl implements User { @Autowired private User user;//自动配置user
... }
等同于XML中的配置:
<property name="user" ref="user" />
在XML可以只配置bean,不需要对property的配置
<bean id="userImpl" class="com.user.userImpl" />
<!--<property name="user" ref="user" />-->
2.@Qualifier
在上面的例子中,如果当Spring上下文中存在不止一个User类型的bean或者不存在User类型的bean时,就会抛出BeanCreationException异常。我们可以使用@Qualifier配合@Autowired来解决这些问题。
@Autowired public void setUserDao(@Qualifier("userDao") UserDao userDao) { this.userDao = userDao; }
这样,Spring会找到id为userDao的bean进行装配。
3.@Component、@Repository、@Service、@Controller
可以对类进行自动配置
@Component("userDao") public class UserImpl implements User { ... }
等同于XML中的配置:
<bean id="userImpl" class="com.user.userImpl" />
但是尽量不要使用@Component而要使用@Repository、@Service、@Controller,它们分别对应存储层Bean,业务层Bean,和展示层Bean
4.@Scope
定义Bean的作用范围
@Component @Scope("prototype") public class UserImpl implements User { ... }
等同于XML中的
<bean id="userImpl" class="com.user.userImpl" scope="singleton"/>