spring的注解使用
1.注解测试
在xml里面配置
<context:component-scan base-package="cn.ql"></component-scan>
component-scan:指定Spring扫描的包,例如你在里面配置的是cn.ql,那么spring会扫描cn.ql.xxx的所有的包
base-package:配置包名(扫描这个包以及这个包里面所有的子包)
第一组注解:(用来创建对象交给spring管理)
@component
这个里面的value属性给这个类指定唯一的名字如果不指定那么默认就是当前类的名字
@component:这个适合用于所有的类
@controller:适合用于web层,当然用在别个层也是可以的,只不过spring给你提供的都是见名知意的效果
那么我们就尽量也用到见名知意的效果
里面的value属性,也是指定当前类的唯一,如果不写那么默认是当前类的名称
@service:用于service层
里面的value属性跟上面是一样的效果的
@repository:用于dao层
value:跟上面的效果都是一样的
第二组注解,(自动注入对象)
他是替代了xml里面的<property>
<set></set>
<list></list>
<array></array>
<map></map;
<props>
<prop></prop>
</props>
</property>
中的这几个标签
@Autowired
1.按照接口类型自动注入
2.如果有多个实现类,再按照属性名的id从spring容器里面去找
@Qualifier 配置到属性
按照的指定的id从容器里面找,他可以指定id的名字
@Autowired 和 @Qualifier 配合使用
查找对象
1.按照接口的类型去找
2.按照@qualifier指定的名称去找
@Resource : jdk提供的注解(按照指定的bean的id从容器里面去寻找)
里面的name赋值必须是唯一的,他相当于id
注意:使用注解的注入方式不需要提供set方法
@value:可以给私有属性赋值,但这种方式用的比较少,因为如果用value赋值的话太麻烦还不如我们直接username=xxx这样赋值方便呢
但是他还有个功能就是可以读取配置文件里面的内容
配置文件里面有个
jdbc.username=root
难么我们就可以这样配置
@value("${jdbc.username}"):这样就可以了,使用的是Spring_el表达式
private String username;
但是使用这个的前提条件是配置文件必须的在配置文件xml里面配置交给spring管理
<bean id="propertySource"
class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"></property>
</bean>
3:第三组注解是声明对象的生命周期的:
@scope:指定对象的作用域
singleton:单列默认就是单列的
prototype:多列(struts2的动作类交给spring管理的时候必须的使用多列)
request:基本不用
session:基本不用@postConstruct:指定初始化方法
@preDestroy:指定销毁的方法(销毁的方法:只能是在单列的情况下使用)
spring3之后提供了一套全新的注解,使用这套注解完全替换xml里面的配置
第四 纯注解的配置方式
使用这些注解主要是用来配置spring的
@configuration:定义到类上:声明此类是一个配置类
@componentScan:指定扫描的包(开启对注解的支持)
basepackages:指定扫描的包@ComponentScan里面的一个属性(里面写的是指定扫描的包和这个包的所有子包)
使用注解的方式进行配置的时候:
1.我们自己写的代码交给spring管理的时候,需要在类上使用@component @controller等注解来做
2.外部jar包提供的类,我们就需要使用@Bean配置到方法,交给spring管理
@Bean:定义到方法上
2.用@Bean配置的方法这个方法的返回值会交给spring管理的.
name:bean的唯一标示
@Import:导入其他的配置类
里面的value属性:配置其他类的字节码文件
第五:使用spring提供的测试环境进行junit单元测试
1.导入spring中对测试环境提供的jar包:spring-test.jar
2.在测试类上使用注解的形式配置单元测试环境
@RunWith(SpringJunit4ClassRunner.class):指定单元测试的运行环境
@ContextConfiguration:
里面的两个属性分别用在xml配置文件上和注解
locations(String类型单位xml位置) :针对的是xml配置方式
classes(配置类的字节码对象) :针对注解的配置方法
单元测试类是不需要交给spring管理的,因为浪费资源
spring的注解使用的更多相关文章
- Spring MVC注解的一些案列
1. spring MVC-annotation(注解)的配置文件ApplicationContext.xml <?xml version="1.0" encoding=& ...
- Spring系列之Spring常用注解总结
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...
- spring @condition 注解
spring @condition注解是用来在不同条件下注入不同实现的 demo如下: package com.foreveross.service.weixin.test.condition; im ...
- spring mvc(注解)上传文件的简单例子
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...
- Spring的注解方式实现AOP
Spring对AOP的实现提供了很好的支持.下面我们就使用Spring的注解来完成AOP做一个例子. 首先,为了使用Spring的AOP注解功能,必须导入如下几个包.aspectjrt.jar,asp ...
- Spring 之注解事务 @Transactional
众所周知的ACID属性: 原子性(atomicity).一致性(consistency).隔离性(isolation)以及持久性(durability).我们无法控制一致性.原子性以及持久性,但可以 ...
- 数据库事务中的隔离级别和锁+spring Transactional注解
数据库事务中的隔离级别和锁 数据库事务在后端开发中占非常重要的地位,如何确保数据读取的正确性.安全性也是我们需要研究的问题.ACID首先总结一下数据库事务正确执行的四个要素(ACID): 原子性(At ...
- Spring JSR-250注解
Java EE5中引入了“Java平台的公共注解(Common Annotations for the Java Platform)”,而且该公共注解从Java SE 6一开始就被包含其中. 2006 ...
- 【SSM 2】spring常用注解
声明:以下观点,纯依据个人目前的经验和理解,有不当之处,多指教! 一.基本概述 注解(Annotation):也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举 ...
- atititt.java定时任务框架选型Spring Quartz 注解总结
atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...
随机推荐
- 守护进程VS守护线程
守护(daemon)进程 引入: join()方法可以使一个进程运行完之后再执行下一个进程,而daemon()方法就是主进程的代码执行完毕之后,不需要等待子进程,立即终止子进程. join()方法和d ...
- Tomcat (安装及web实现 基础)
Tomcat服务器配置 安装:解压对应的版本就行 注意;不要把Tomcat放到有中文的和有空格的目录中 验证是否安装成功:进入安装盘的安装文件的bin目录下 执行startup bat 成功 80 ...
- java实现导出Excel(跨行,跨列)
先来个最终结果样式: 第一步: 传参,后期可根据自己需要进行调整.我这里需要的是 quarter 代表季度 dptid 部门编号根据接受过来的参数进行文档命名. UserInfo userInfo=( ...
- Android 从零搭建简单MVP Demo
首先简单介绍一下MVP的构成及优缺点: MVP的全称为Model-View-Presenter, Model提供数据(网络请求.数据存储等): View负责页面显示: Presenter负责逻辑的处理 ...
- 自己主动化 远程登陆linuxserver并运行命令 —— expect
原文地址:http://blog.csdn.net/wangyuling1234567890/article/details/41149429 LinuxserverA登陆LinuxserverB s ...
- 在IIS7上导出全部应用程序池的方法 批量域名绑定
在IIS7+上导出全部应用程序池的方法: %windir%/system32/inetsrv/appcmd list apppool /config /xml > c:/apppools.xml ...
- centos 6.5 安装mongodb2.6
前言: 系统版本号:Centos-6.5-x86_64 *** Centos编译安装mongodb 2.6 系统最好是64位的,才干更好发挥mongodb的性能 1.准备,下载源文件(二进制编译版) ...
- Codeforces548A:Mike and Fax
While Mike was walking in the subway, all the stuff in his back-bag dropped on the ground. There wer ...
- gulp提高微信小程序开发效率
最近公司要求把一套公众号项目的页面迁移到小程序,也就意味着要重新敲一份代码,不能更繁琐了,为了节省时间,提高迁移效率,就决定自己动手用gulp搭一个简易的小程序框架,再记录一下搭建过程.希望有大神 ...
- 0基础手把手教你搭建webpack运行打包项目(未完待续)
这些天在项目之余的时间学习了webpack打包项目的东西,非常荣幸的找到一些大神的文章来学习,死劲嚼了几天,终于略知一二.在以后的工作上还需继续学习,下面我将分享我这几天学到的一点东西,希望能让我一个 ...