[刘阳Java]_Spring常用注解介绍_第6讲
2024-08-29 04:50:12
Spring的注解是在Spring2.5的版本中引入的,目的简化XML配置。在企业开发过程中使用注解的频率非常高,但是学习注解的前提是大家一定要对Spring基于XML配置要熟悉,这是我个人建议,因为在Spring2.0的版本时候是没有出现注解的使用
1. Spring常用注解如下
- @Component
- @Autowired
- @Qualifier
- @Scope
- @Controller
- @Service
- @Repository
2. 使用Spring注解的时候一定关注Spring框架需要加入的包【很重要】,我们这里以spring4.0.3版本为例来介绍
- common-logging.jar
- spring-core-4.0.3.jar
- spring-context-4.0.3.jar
- spring-beans-4.0.3.jar
- spring-expression-4.0.3.jar
- spring-aop-4.0.3.jar,【此jar包在使用<context:component-scan/>需要导入此包】
3. @Component注解
- @Component主要用于将一个Java类注入到Spring框架中,它相当于XML配置文件中的<bean id=”xxx” class=”xxx”/>
- 当使用了Spring注解后,我们需要在配置文件中添加<context:component-scan/>来扫描添加了注解的类,这样子声明注解的类才能起作用
- Bean实例的名称默认是Bean类的首字母小写,其他部分不变。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.gxa.spring.day02"></context:component-scan> </beans>
package com.gxa.spring.day02; import org.springframework.stereotype.Component; @Component
public class StudentAnnotation {
}
package com.gxa.spring.test; import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.gxa.spring.day02.StudentAnnotation; public class Test02 { @Test
public void m06() {
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
StudentAnnotation studentAnnotation = context.getBean("studentAnnotation", StudentAnnotation.class);
System.out.println(studentAnnotation.hashCode());
} }
4. 除了@Component注解,Spring容器提供了3个功能和@Component注解等同。它们分别是用于对Dao,Service及Web层的Controller进行注解
- @Repository:用于对Dao实现类注解
- @Service:用于对Service实现类注解
- @Controller:用于对Controller实现类注解
5. @Autowired注解
- Spring2.5引入了@Autowired注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作(DI依赖注入工作)
- Spring通过@Autowired注解实现Bean之间的依赖关系
package com.gxa.spring.day02; import org.springframework.stereotype.Component; @Component
public class TeacherAnnotation {
public void getTeacherName() {
System.out.println("===刘老师好===");
}
}
package com.gxa.spring.day02; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; @Component
public class StudentAnnotation { /**
* 通过Autowired来自动装备Student所依赖的对象
* 无需创建setter方法
* 无需编写XML配置文件中<property/>
*/
@Autowired
private TeacherAnnotation teacherAnnotation; public void showTeacher() {
teacherAnnotation.getTeacherName();
}
}
- @Autowired(required = false),告诉 Spring:在找不到匹配 Bean 时也不报错
package com.gxa.spring.day02; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; @Component
public class StudentAnnotation { /**
* 注意TeamAnnotation没有加入@Component
* 当StudentAnnotation依赖TeamAnnotation会报错
* 但是如果加入@Autowired(required=false)就不会报错
*/
@Autowired(required=false)
private TeamAnnotation teamAnnotation; public void showTeacher() {
teacherAnnotation.getTeacherName();
}
}
6. @Qualifier指定注入Bean的名称
- 如果容器中有一个以上匹配的Bean时,则可以通过@Qualifier注解限定注入的Bean名称
package com.gxaedu.bean; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component; @Component
public class Computer {
@Autowired
@Qualifier("storage01")
private Storage storage;
public void m01() {
storage.show();
}
}
package com.gxaedu.bean; import org.springframework.stereotype.Component; @Component("storage01")
public class Storage { //此类是在com.gxaedu.bean下的Storage
public void show() {
System.out.println("东芝硬盘");
}
}
package com.gxaedu.test; import org.springframework.stereotype.Component; @Component
public class Storage { //此类是在com.gxaedu.test下的Storage }
7. @Qualifier为方法指定注入Bean名称
package com.gxa.spring.day02; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component; @Component
public class StudentAnnotation { private CourseAnnotation courseAnnotation; /**
* @Autowired来自动装备构造方法里面的对象
* @Qualifier来指定依赖对象的bean
* @paramcourseAnnotation
*/
@Autowired
public StudentAnnotation(@Qualifier("course") CourseAnnotation courseAnnotation) {
this.courseAnnotation = courseAnnotation;
} public void showCourse() {
System.out.println(courseAnnotation.hashCode());
}
}
8. @Scope注解来显式指定Bean作用范围
@Scope("prototype")
@Component
public class Car {
}
最新文章
- java观察者模式
- springmvc下js控制表单提交(表单提交前检验,提交后获取json返回值)
- Linux 静态库和动态库 使用说明
- How to generate number Sequence[AX 2012]
- uva 11375
- NPOI读取Excel,导入数据到Excel练习01
- web请求报出 “超过了最大请求长度” 【注意:重启IIS】
- 【linux操作命令】mysql
- OC语言-02面向对象的三大特性
- CentOS下的svn强制用户提交时写日志
- UIScrollView入门与框架设计
- SqlDependency不起作用
- ceph之纠删码
- input[type=file]样式更改以及图片上传预览
- exports
- windows相关命令记录
- django之 F&;Q 聚合与分组
- 如何正确的使用Ubuntu以及安装常用的渗透工具集.
- Html5游戏框架createJS组件--EaselJS
- [转]深刻理解Python中的元类(metaclass)以及元类实现单例模式