(1).用于注册bean对象的注解

1.1@Component:

作用: 调用无参构造创建一个bean对象,并把对象存入spring的Ioc容器,交由spring容器进行管理。相当于在xml中配置一个bean。

属性: value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写。

1.2@Controller

作用: 调用无参构造创建一个bean对象,并把对象存入spring的Ioc容器,交由spring容器进行管理。相当于在xml中配置一个bean。一般用于表现层的注解

属性: value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写。

1.3@Service

作用: 调用无参构造创建一个bean对象,并把对象存入spring的Ioc容器,交由spring容器进行管理。相当于在xml中配置一个bean。一般用于业务层的注解

属性: value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写。

1.4@Repository

作用: 调用无参构造创建一个bean对象,并把对象存入spring的Ioc容器,交由spring容器进行管理。相当于在xml中配置一个bean。一般用于持久层的注解

属性: value:指定bean的id。如果不指定value属性,默认bean的id是当前类的类名。首字母小写。

1.5@Bean

作用:

用于把当前方法的返回值作为bean对象存入spring的ioc容器中 属性:name:用于指定bean的id。当不写时,默认值是当前方法的名称。注意:当我们使用注解配置方法时,如果方法有参数,spring框架会去容器中查找有没有可用的bean对象,查找的方式和Autowired注解的作用是一样的。

例: 获取Datasource对象 @Return @Bean(value = "dataSource") public DataSource getDataSource(){

try{

ComboPooledDataSource dataSource = new ComboPooledDataSource();

dataSource.setDriverClass(this.driver);

dataSource.setJdbcUrl(this.url);

dataSource.setUser(this.username);

dataSource.setPwd(this.pwd);

return dataSource; }catch(Exception exception) {

throw new RuntimeException(exception);

}

}

(2).用于依赖注入的注解

2.1@Autowired

作用:

@Autowired和@Resource**都是Spring支持的注解形式动态装配bean的方式。@Autowired默认按照类型(byType)装配,如果想要按照名称(byName)装配,需结合@Qualifier注解使用。

属性:

required:@Autowired注解默认情况下要求依赖对象必须存在。如果不存在,则在注入的时候会抛出异常。如果允许依赖对象为null,需设置required属性为false。

例: @Autowired @Qualifier("userService")

private UserService userService;

2.2@Qualifier

作用:

在自动按照类型注入的基础之上,再按照 Bean 的 id 注入。它在给字段注入时不能独立使用,必须和@Autowire一起使用;但是给方法参数注入时,可以独立使用。 在自动按照类型注入的基础之上,再按照Bean的id注入.它在给字段注入时不能独立使用,必须和@Autoire一起使用;但是给方法参数注入时,可以独立使用。

属性:

value:用于指定要注入的bean的id,其中,该属性可以省略不写

例:

@Autowire

@Qualifier(value="userService")

//@Qualifier("userService") //value属性可以省略不写

private UserService userService;

2.3 @Resource

作用:

@Autowire和@Resource都是Spring支持的注解形式动态装配bean的方式。@Resource默认按照名称(byName)装配,名称可以通过name属性指 定。如果没有指定name,则注解在字段上时,默认取(name=字段名称)装配。如果注解在setter方法上时,默认取(name=属性名称)装配。

属性:

name:用于指定要注入的bean的id

type:用于指定要注入的bean的type

装配顺序

1.如果同时指定name和type属性,则找到唯一匹配的bean装配,未找到则抛异常;

2.如果指定name属性,则按照名称(byName)装配,未找到则抛异常;

3.如果指定type属性,则按照类型(byType)装配,未找到或者找到多个则抛异常;

4.既未指定name属性,又未指定type属性,则按照名称(byName)装配;如果未找到,则按照类型(byType)装配。

例:

@Resource(name="userService")

//@Resource(type="userService")

//@Resource(name="userService", type="UserService")

private UserService userService;

2.4 @Value

作用:

通过@Value可以将外部的值动态注入到Bean中,可以为基本类型数据和String类型数据的变量注入数据

例:

// 1.基本类型数据和String类型数据的变量注入数据

@Value("tom")

private String name;

@Value("18")

private Integer age;

// 2.从properties配置文件中获取数据并设置到成员变量中

// 2.1jdbcConfig.properties配置文件定义如下

jdbc.driver \= com.mysql.jdbc.Driver

jdbc.url \= jdbc:mysql://localhost:3306/eesy

jdbc.username \= root

jdbc.password \= root

// 2.2获取数据如下

@Value("${jdbc.driver}")

private String driver;

@Value("${jdbc.url}")

private String url;

@Value("${jdbc.username}")

private String username;

@Value("${jdbc.password}")

private String password;

(3)用于改变bean作用范围的注解

3.1@Scope

作用:

指定bean的作用范围

属性:

value:

1)singleton:单例

2)prototype:多例

3)request:

4)session:

5)globalsession:

例:@Autowire

@Scope(value="prototype")

private UserService userService;

(4)生命周期相关的注解

@PostConstruct

作用:

指定初始化方法

例:

@PostConstruct

public void init() {

System.out.println("初始化方法执行");

}

4.2 @PreDestroy

作用:

指定销毁方法

例:

@PreDestroy

public void destroy() {

System.out.println("销毁方法执行");

}

-----dao
@Repository --写在dao层
-----service
@Service --写在service层
-----controller
@Controller --写在controller层
@Scope --写在多人访问controller上 单例
@scope("prototype") 多例
-----属性注入
@Autowired --写在需要注入的属性上
@Resource(name="loginService")与Autowired类似,但是需要通过指定名字去寻找找对应名字的注入对象
@Inject 与Autowired和Resource
-----资源处理
@RequestMapping对应访问的资源,可以只写在controller方法上
也可以写在controller上,controller上的也可以省略

作者:旧歌
链接:https://www.cnblogs.com/wdyjt/p/14101952.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利

Spring 中常用的注解的更多相关文章

  1. Spring中常用的注解,你知道几个呢?

    今天给大家分享下Spring中一般常用的注解都有哪些.可能很多人做了很长是了但有些还是不知道一些注解,不过没有关系,你接着往下看. Spring部分 1.声明bean的注解 @Component 组件 ...

  2. Spring中常用的注解(@Entity,@Table,@Column,@Repository,@Service)

    当项目变得比较大的时候,如何还使用hbm.xml文件来配置Hibernate实体就会变得比较复杂.这里Hibernate提供了Annotation注解方式,使得Hibernate的映射文件变得很方便管 ...

  3. spring中常用的注解

    使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan base-package ...

  4. Spring中常用的注解及作用

    @Component(value) 配置类,当使用该注解时,SpringIOC会将这个类自动扫描成一个bean实例 不写的时候,默认是类名,且首字母小写 @ComponentScan 默认是代表进行扫 ...

  5. Junit中常用的注解说明

    Java注解((Annotation)的使用方法是@注解名 ,能通过简单的词语来实现一些功能.在junit中常用的注解有@Test.@Ignore.@BeforeClass.@AfterClass.@ ...

  6. 简单了解Spring中常用工具类_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口, ...

  7. 第5章—构建Spring Web应用程序—关于spring中的validate注解后台校验的解析

    关于spring中的validate注解后台校验的解析 在后台开发过程中,对参数的校验成为开发环境不可缺少的一个环节.比如参数不能为null,email那么必须符合email的格式,如果手动进行if判 ...

  8. spring 中常用的配置项

    1.spring 中常用的配置项 application.properties #端口 server.port=8081 #调试模式 debug=false #上下文 #一般情况下,小项目通常都是在t ...

  9. Spring 中aop切面注解实现

    spring中aop的注解实现方式简单实例   上篇中我们讲到spring的xml实现,这里我们讲讲使用注解如何实现aop呢.前面已经讲过aop的简单理解了,这里就不在赘述了. 注解方式实现aop我们 ...

随机推荐

  1. 如何删除一台OSD主机

    在ceph的一台OSD主机出现故障的时候,数据可以通过副本的机制进行恢复,之后通过删除osd的操作也能够将故障osd从osd tree当中删除掉,但是故障的 osd 的主机仍然会留在集群当中,通过 c ...

  2. HotSpot源码分析之类模型

    HotSpot采用了OOP-Klass模型描述Java的类和对象.Klass模型采用Klass类及相关子类的对象来描述具体的Java类.一般HotSpot JVM 在加载Java的Class 文件时, ...

  3. Web安全常见漏洞修复建议

    转载地址:https://security.pingan.com/blog/17.html SQL注入 在服务器端要对所有的输入数据验证有效性. 在处理输入之前,验证所有客户端提供的数据,包括所有的参 ...

  4. ifconfig结果说明

  5. FL Studio中如何制作和混音Dutch Lead(上)

    Dutch Lead是电子音乐类型Dutch House以及Bigroom House中常用的Lead音色,这一篇文章中我将从制作和混音两方面来讲解Dutch Lead. (一).Dutch Lead ...

  6. Java基础教程——异常处理详解

    异常处理 好程序的特性 可重用性 可维护性 可扩展性 鲁棒性 |--|--Robust的音译 |--|--健壮.强壮之意 |--|--指在异常和危险情况下系统依然能运行,不崩溃 Java中,写下如下代 ...

  7. Python实现树莓派摄像头持续录像并传送到主机

    关于树莓派,想必从事嵌入式开发的开发者都有听过,树莓派原名为Raspberry Pi,也就是它的英文读法,树莓派诞生于英国,由"Raspberry Pi 基金会"这个慈善组织注册开 ...

  8. mysql一条sql语句如何执行的?

    mysql 一条sql语句如何执行的? 文章内容源自:极客时间-林晓彬老师-MySQL实战45讲 学习整理 在了解一条查询语句如何执行之前,需要了解下MySQL的基本架构是怎样的,如下图所示: 可以看 ...

  9. VS2019配置C+++mingW32配置

    两个安装教程博客 http://t.sg.cn/yq22mn http://t.sg.cn/wsavo0 基于调试报错,是因为文件夹是中文,贴一个详细的博客:http://t.sg.cn/3j5e4z

  10. Jmeter测试Websocket接口

    前言 websocket是什么? WebSocket 协议在2008年诞生,2011年成为国际标准.所有浏览器都已经支持了. 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器 ...