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. System.Security.Authentication.AuthenticationException:根据验证过程,远程证书无效。

    好久没写博客了,今天突然遇到个神奇的问题. 做好的网站在win10上和Windows sever 2012 上都没有问题,搬到Windows sever 2003上就出现了这么一个错误: Server ...

  2. unity3d中物体的控制

    一.物体的循环移动和旋转 思路:通过对时间的计算,每隔一段时间让物体旋转,实现来回移动. float TranslateSpeed = 0.02f; float TranslateSpeedTime ...

  3. Hive基础之Hive体系架构&运行模式&Hive与关系型数据的区别

    Hive架构 1)用户接口: CLI(hive shell):命令行工具:启动方式:hive 或者 hive --service cli ThriftServer:通过Thrift对外提供服务,默认端 ...

  4. Python之函数——内置函数

    内置函数(Built-in Functions) 截止到3.6版本,python一共为我们提供了68个内置函数.它们就是python提供给的可以直接拿来使用的所有函数,接下来让我们一起认识一下这些函数 ...

  5. bootstrapValidator针对设置赋值进行验证

    bootstrapValidator在提交的时候可以进行验证,但是对于点击输入框进行赋值的时候验证失效. 解决方法: 然后在设置change方法方可解决.

  6. chrome浏览器控制台 console不打印信息问题解决办法。

    转自:https://blog.csdn.net/wang17866603359/article/details/79083776 最近换了安装chrome,想按F12调试下代码,发现控制台什么信息都 ...

  7. 使用Travis进行持续集成

    使用Travis进行持续集成 廖雪峰 持续集成:Continuous Integration,简称CI,意思是,在一个项目中,任何人对代码库的任何改动,都会触发CI服务器自动对项目进行构建,自动运行测 ...

  8. 学习写了一个点击按钮倒计时的jquery小插件

    (function($) { $.fn.extend({ getSms: function(value) { value = $.extend({ wait: 60, //参数, 默认60秒 }, v ...

  9. PYTHON-进阶-装饰器小结,转载

    本文转载自:http://www.wklken.me/posts/2012/10/27/python-base-decorator.html 基本概念 具体概念自己google 装饰器是一个很著名的设 ...

  10. 转载:MySQL和Redis 数据同步解决方案整理

    from: http://blog.csdn.net/langzi7758521/article/details/52611910 最近在做一个Redis箱格信息数据同步到数据库Mysql的功能. 自 ...