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();
}
}

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

 

Spring框架中Bean管理的常用注解的更多相关文章

  1. Spring中Bean管理的常用注解

    在Spring中,主要用于管理bean的注解分为四大类:1.用于创建对象.2.用于给对象的属性注入值.3.用于改变作用的范围.4.用于定义生命周期.这几个在开发中经常接触到,也可以说每天都会遇见.其中 ...

  2. Spring 的Bean管理的常用注解

    属性注入的注解(使用注解注入的方式,可以不用提供set方法) @Value 用于注入普通类型 @Autowired 自动装配 :默认按类型进行装配  按名称注入 @Qualifier 强制使用名称注入 ...

  3. Spring框架的Bean管理的配置文件方式

    1. id属性和name属性的区别 * id -- Bean起个名字,在约束中采用ID的约束,唯一 * 取值要求:必须以字母开始,可以使用字母.数字.连字符.下划线.句话.冒号 id:不能出现特殊字符 ...

  4. spring框架中三层架构相关的注解

    做了这么多年的C++,再去学Java,确实发现,语言都是相通的,即使是Java的那么多生态,理解起来也并不费劲 Spring 框架目前还在学习中,处于 Tourist 阶段,目前只求会做,不求原理,等 ...

  5. Spring框架中的@Import、@ImportResource注解

    spring@Import @Import注解在4.2之前只支持导入配置类 在4.2,@Import注解支持导入普通的java类,并将其声明成一个bean 使用场景: import注解主要用在基于ja ...

  6. spring框架中Bean的生命周期

    一.Bean 的完整生命周期 在传统的Java应用中,bean的生命周期很简单,使用Java关键字 new 进行Bean 的实例化,然后该Bean 就能够使用了.一旦bean不再被使用,则由Java自 ...

  7. 理解Spring框架中Bean的5个作用域

    当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域.Spring支持如下5种作用域: singleton:单例模式,在整个Spring I ...

  8. Spring框架中获取连接池常用的四种方式

    1:DBCP数据源 DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池,所 ...

  9. 解释Spring框架中bean的生命周期?

    Spring容器 从XML 文件中读取bean的定义,并实例化bean. Spring根据bean的定义填充所有的属性. 如果bean实现了BeanNameAware 接口,Spring 传递bean ...

随机推荐

  1. Pycharm code templates自定义

    Settings>Editor>Code Style>File and Code Templates python script>>>> # 模板变量 ${P ...

  2. 不规则ROI的提取

    在网上看到基于opencv3.0之前的API实现不规则ROI的提取,我自己试了一下发现opencv3.0不行,第一想法是我写的有问题,最后发现是API的改版.原理很简单. 目标:提取黑线作为ROI 原 ...

  3. ansible的安装与使用

    ansible的特点: 1. 基于ssh运行 2. 无需客户端 安装ansible 这里提供四种安装方式,根据自己的需要任选一种即可 1.1使用yum安装 yum install epel-relea ...

  4. 查看虚拟机CENTOS7 的 IP 地址和命令

    用于生产环境下  安装CENTOS7 太费时间, 研究阶段 放在虚拟机里面  是最好的选择: 但是安装完毕后 就出现问题    无法使用IFCONFIG : 毕竟 内核不一样 首先我们登录操作系统 用 ...

  5. svn+apache+ssl快速部署

    在svn+apache文章中已经成功搭建了web-svn,由于在http网络上数据都是以明文传输,公司的源码需要一定的保密机制,基于安全考虑现整合web-svn+ssl.构建安全的svn服务器, 1. ...

  6. ASCII和万国码

    ASCII和万国码 什么是ASCII 计算机的起初是使用内存中的0101来表示数和机器码.如何用内存中的bit来表示文本一直困扰着人们,毕竟人类主要的信息展示是文字,而不是苦涩的0101.后来ASCI ...

  7. CSS3d 基础

    -webkit-transform-style:-webkit-preserve-3d;//设置3D转换 translateX:px; 平移 translateY:px; translateZ:px; ...

  8. JS实现让滚轮控制网页头部显示与隐藏

    在很多网站中都有鼠标网上滚动头部就会滑出,继续往下滚动就会隐藏,下面看看实现方法 scroll(); function scroll(){// 入口方法 这个方法是获取事件的兼容,获取delta -- ...

  9. J2SE 8的注解

    1. 注解概念 (1) 注解格式 modifiers @interface AnnotationName { type elementName(); type elementName() defaul ...

  10. Linux下类似windows下_beginthread和_endthread 的多线程开发

    在 windows下头文件中包含 #include<process.h> 就可以使用_beginthread进行线程创建.个人感觉挺方便的. 在linux下类似于_beginthread ...