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();
}
}
不管是哪种方法,执行结果都一样,执行结果为:

Spring框架中Bean管理的常用注解的更多相关文章
- Spring中Bean管理的常用注解
在Spring中,主要用于管理bean的注解分为四大类:1.用于创建对象.2.用于给对象的属性注入值.3.用于改变作用的范围.4.用于定义生命周期.这几个在开发中经常接触到,也可以说每天都会遇见.其中 ...
- Spring 的Bean管理的常用注解
属性注入的注解(使用注解注入的方式,可以不用提供set方法) @Value 用于注入普通类型 @Autowired 自动装配 :默认按类型进行装配 按名称注入 @Qualifier 强制使用名称注入 ...
- Spring框架的Bean管理的配置文件方式
1. id属性和name属性的区别 * id -- Bean起个名字,在约束中采用ID的约束,唯一 * 取值要求:必须以字母开始,可以使用字母.数字.连字符.下划线.句话.冒号 id:不能出现特殊字符 ...
- spring框架中三层架构相关的注解
做了这么多年的C++,再去学Java,确实发现,语言都是相通的,即使是Java的那么多生态,理解起来也并不费劲 Spring 框架目前还在学习中,处于 Tourist 阶段,目前只求会做,不求原理,等 ...
- Spring框架中的@Import、@ImportResource注解
spring@Import @Import注解在4.2之前只支持导入配置类 在4.2,@Import注解支持导入普通的java类,并将其声明成一个bean 使用场景: import注解主要用在基于ja ...
- spring框架中Bean的生命周期
一.Bean 的完整生命周期 在传统的Java应用中,bean的生命周期很简单,使用Java关键字 new 进行Bean 的实例化,然后该Bean 就能够使用了.一旦bean不再被使用,则由Java自 ...
- 理解Spring框架中Bean的5个作用域
当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域.Spring支持如下5种作用域: singleton:单例模式,在整个Spring I ...
- Spring框架中获取连接池常用的四种方式
1:DBCP数据源 DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池,所 ...
- 解释Spring框架中bean的生命周期?
Spring容器 从XML 文件中读取bean的定义,并实例化bean. Spring根据bean的定义填充所有的属性. 如果bean实现了BeanNameAware 接口,Spring 传递bean ...
随机推荐
- Java与C++语法的区别
1. 注释可以在Java程序中起到文档标记的作用 类文档标记: 1)@version 2)@author 3)@param 4)@return 5)@exception 2. Java的字符占两个字节 ...
- Spring Security编程模型
1.采用spring进行权限控制 url权限控制 method权限控制 实现:aop或者拦截器(本质就是之前之后进行控制)--------------------proxy就是 2.权限模型: 本质理 ...
- 异步与websocket
异步与WebSockets 知识点 理解同步与异步执行过程 理解异步代码的回调写法与yield写法 Tornado异步 异步Web客户端AsyncHTTPClient tornado.web.asyn ...
- linux开发模式
linux已被使用vim[文本编辑]+gcc[编译]+[gdb代码调试]开发模式 简单设置下开发环境,像设定vim的语法高亮,编辑c时代码自动缩进,tab缩进字符,显示行号等 编辑vinrc一般vin ...
- 使用SharedPreferences存储数据
SharedPreferences把数据保存在指定名称的XML文件中,文件地址在/data/data/包名/Shared_Prefs/文件夹中,具体是通过map形式保存. 保存数据: SharedPr ...
- leetcode949
public class Solution { public string LargestTimeFromDigits(int[] A) { ); ; ; foreach (var nums in l ...
- 门禁系统socket通讯编程
最近遇到一个socke udp协议通讯的需求,而且是16进制数据接收.这样在传输参数的时候老是提示参数错误,因为计算机是不能直接传输16进制的,会自行转换,所有以下代码非常完美的解决我的问题,同时也让 ...
- JS的prototype和__proto__、constructor
看了JS的prototype和__proto__这篇文章,才感觉很清晰了,对于原型这块,以前经常把这些属性弄不清楚, 明白了之后保存下整理下: prototype: 是函数的一个属性(每个函数都有一个 ...
- FireFox 火狐主页被劫持
火狐主页被劫持hao123,流氓 WIN7 ,firefox,任务栏,快速启动,右键 属性 target 应该是 "D:\Program Files (x86)\Mozilla Firefo ...
- 基于OpenGL编写一个简易的2D渲染框架-11 重构渲染器-Renderer
假如要渲染一个纯色矩形在窗口上,应该怎么做? 先确定顶点的格式,一个顶点应该包含位置信息 vec3 以及颜色信息 vec4,所以顶点的结构体定义可以这样: struct Vertex { Vec3 p ...