总结Spring注解第三篇

  • @Autowired @Qualifier @Primary spring框架定义的
@Service
public class BookService {

    //4.自动装配默认一定要将属性赋值,可以使用required = false避免
    //2.@Autowired 如果找到多个相同类型的组件,ioc容器会将其属性名作为组件的id进行查找  context.getBean("bookDao2");
    @Qualifier("bookDao")  //3.使用@Qualifier指定装配的组件id,而不是使用属性名当id查找
    @Autowired(required = false)   //1.@Autowired默认优先按照类型去找对应的组件,找到之后赋值给变量,相当于:bookDao = context.getBean(BookDao.class);
    private BookDao bookDao2;

    public void printBookDao(){
        System.out.println(bookDao2);
    }

}
@Configuration
@ComponentScan(value = {"com.zyn.dao","com.zyn.service","com.zyn.controller"})
public class MainConfigOfAutowired {

    @Primary  // 让spring进行自动装配时,默认使用首选的bean,不过也可以继续使用@Qualifier指定spring装配bean的id
    @Bean("v22")
    public BookDao bookDao2(){
        BookDao bookDao = new BookDao();
        bookDao.setLabel("2");
        return bookDao;
    }
}
  • 可以再注解@Repository,@Bean中给装配的bean起名字,spring容器会通过此名字来查找容器中的bean对象。

  • @PropertySource @Value

  1. @PropertySource(value = {“classpath:person.properties”}) //通过此注解来加载properties配置文件,可以配合@Value使用 @Value("${person.name}")
  • @Resource @Inject 属于Java出的规范
    1. 两者都可以完成自动装配,@Resource默认按照组件名称进行装配,可以完成和@Autowired一样的自动装配功能,没有支持@Primary功能,也没有支持@Autowired(required = false)功能。
    2. @Inject注解和@Autowired的功能一样,但是需要导入javax.inject依赖,没有支持@Autowired(required = false)功能。
发布了3 篇原创文章 · 获赞 4 · 访问量 239

猜你喜欢

转载自blog.csdn.net/Hepburnan/article/details/104443100
今日推荐