Spring框架中Bean管理的常用注解

1. @Component:组件.(作用在类上)可以作用在任何一个类上

2. Spring中提供@Component的三个衍生注解:(功能目前来讲是一致的)
    * @Controller       -- 作用在WEB层(同样可以使用@Component,因为@Controller是@Component的细化。下面两个组件同)
    * @Service          -- 作用在业务层
    * @Repository       -- 作用在持久层

    * 说明:这三个注解是为了让标注类本身的用途清晰,Spring在后续版本会对其增强

3. 属性注入的注解(说明:使用注解注入的方式,可以不用提供set方法)
    * 如果是注入的普通类型,可以使用value注解
        * @Value            -- 用于注入普通类型   
@Component(value="userService")
public class UserServiceImpl implements UserService{
    @Value(value="jack")
    private String name;
    public void sayHello(){
        System.out.println("say spring"+name);
    }
}
  这样name便被赋予了jack的值。
    * 如果注入的是对象类型,使用如下注解
        * @Autowired        -- 默认按类型进行自动装配
(1)创建Dao层对象UserDao。这里一定要注意的是:UserDao中也应该加入组件,因为配置文件根据注解去扫描各个文件,如果扫描到就为其创建对象。
package com.huida.demo1;

import org.springframework.stereotype.Repository;

@Repository(value="userDao")//(一定要加上)
public class UserDao {

    public void save(){
        System.out.println("保存用户");
    }
}
(2)在UserServiceImpl实现方法中,引入自定义对象userDao:
这里定义的对象名与Dao层声明的名称不同,那又是如何进行匹配的呢?@Authowired是按照类型进行匹配的,这里定义的dao的类型为UserDao,就去扫描UserDao然后为其创建对象进行匹配。
@Component(value="userService")
public class UserServiceImpl implements UserService{
    @Value(value="jack")
    private String name;
    
    //按照类型自动装配,按照类型进行匹配。
    @Autowired
    private UserDao dao;
    public void sayHello(){
        System.out.println("say spring"+name);
        dao.save();
    }
}
    
        * 如果想按名称注入
            * @Qualifier    -- 强制使用名称注入
如果按照名称注入的话,value中的值应该与Dao层对象声明的名称一样才可以匹配成功
@Component(value="userService")
public class UserServiceImpl implements UserService{
    @Value(value="jack")
    private String name;

    @Qualifier(value="userDao")//按名称注入,value中的值应该与Dao层组件写的名称一样
*/    
    private UserDao dao;
    public void sayHello(){
        System.out.println("say spring"+name);
        dao.save();
    }
}
    * @Resource             -- 相当于@Autowired和@Qualifier一起使用
        * 强调:Java提供的注解
        * 属性使用name属性
@Component(value="userService")
public class UserServiceImpl implements UserService{
    @Value(value="jack")
    private String name;
    @Resource(name="userDao")
    private UserDao dao;
    
    public void sayHello(){
        System.out.println("say spring"+name);
        dao.save();
    }
}

不管是哪种方法,执行结果都一样,执行结果为:

 
原文地址:https://www.cnblogs.com/wyhluckdog/p/10128310.html