java spring框架 注解_spring框架之注解的使用

原标题:spring框架之注解的使用

今天是刘小爱自学Java的第122天。

感谢你的观看,谢谢你。

4f87bc6faa562a851d6566f20b61a944.png

学习内容安排如下:

Spring注解的使用。

JavaWeb项目的搭建。

Spring的Web集成。

本来还计划学Spring的junit测试集成的,结果又没时间了。

一、Spring的注解

IoC容器是Spring的特色之一,可以使用它管理很多Bean,前几天我们都是将这些Bean配置在applicationContext.xml文件中的。

而注解的作用在于:用了注解之后,就不需要在xml文件中配置这些了 。

1开启注解

77f55565ae4cbd16a6c723cedf6fa400.png

①开启spring的注解

context:annotation-config

让注解有效了,能够识别注解。

②配置注解扫描

context:component-scan

用来专门扫描含有@Component注解的类,自动将其作为bean。

base-package

要扫描包的路径,包含子包,com.liuxiaoai表示该包下的所有子包和类定义注解都有效.

注意:注解扫描配置的时候,会自动开启注解功能,也就是说有了②的话,①就不需要了。

如果是注解+XML组合使用,可以只开启①。

2注解的使用

33384f8806e64c329c9b21b616b8e29f.png

①@Component注解

相当于将对象存放到spring容器中。

其中@Component有三个子注解:

@Controller用于标注控制层组件,web层。

@Service用于标注业务层,service层。

@Repository用于标注数据访问组件,dao层。

而@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

②@Autowired注解

将ProductDao注入到了ProductService

单独使用@Autowired ,表示按照类型注入,会到spring容器中查找ProductDao的类型,对应中class的属性值。

如果同类型有多个,可以使用@Autowired + @Qualifier表示按照名称注入。

会到spring容器中查找productDao名称,对应中id的属性值,比如:@Qualifier("productDao")

除此之外还有一种注解方法:

使用@Value("#{productDao}"),也就是Value注解加上spEL表达式,也可以。

3注解测试

d04a316318e5c1859df7f82a0a6efb78.png

通过测试我们能发现,调用service层代码,dao层代码也能被调用。

注意:上述代码中可没有实例化dao层对象。

其实无论是spring注解也好,还是配置xml也罢,都是省略new对象这个步骤。

将dao层和service层对象关联起来了,没有new对象实例化,也能调用dao层代码。

当然spring肯定不止这么简单,只不过目前来说还没有学到其它的知识点。

二、JavaWeb项目搭建

1配置一个JavaWeb项目

这个在以前我们就配置过好多遍了:

774447d6503cb865c7544c1cea4aaa44.png

①设置打包方式

在pom文件中,使用packaging标签添加web工程的打包方式为war。

②编辑项目结构

快捷键Ctrl+Shift+Alt+S即可打开。

找到当前模块下的web文件,如果没有右击模块添加web,添加web目录,目录结构必须为:项目名\src\main\webapp

e4899c712bec26f3fdd377aac26360e9.png

③添加web.xml文件

web.xml文件是在webapp下的WEB-INF路径下面。

④最终项目结构图

webapp、resources以及Java是在同一个层级目录的,都是在main路径下面。

其中关于依赖的引入,需要什么就从父工程中引入即可,在此就不详细说明了。

2配置Tomcat插件

以前是直接在idea中配置Tomcat,现在因为是maven工程,也可以使用Tomcat插件。

317ea0ea6a0e05c595f9e76123b81eac.png

①配置Tomcat插件

同样地,通过父工程中的pom文件引入即可。

其中通过configuration标签,我们可以配置Tomcat的端口和路径。

②运行Tomcat

点击Tomcat7:run即可运行Tomcat。

为了更便捷地运行Tomcat,可以将其配置到idea菜单栏中:

70fae9805bcbb2b0feeaac77287023e3.png

三、Spring的Web集成

一样还是Java三层代码的编写。

1编写代码

5323b55b146ad63bdc47f2a521968057.png

①开启spring注解功能

这不用多说,刚学习了的。

②service层代码编写

将HelloService对象提交到spring容器中管理,同时注入HelloDao。

在方法中编写一条输出语句作为测试,并调用dao层的方法。

③dao层代码编写

将HelloDao对象提交到spring容器中管理,同时在方法中写一条输出语句作为测试。

254586707221091e49d033025c2fc27a.png

④web层代码编写

通过注解开发创建一个HelloServlet。

以前我们都是直接new一个service层对应的对象,现在使用spring框架了,通过spring工厂获取即可。

2项目测试

89315c1015bb07703a77d3baf3c61610.png

启动Tomcat,并在浏览器上输入对应的路径(HelloServlet上的注解即为对应访问路径),访问服务器。

如果在idea控制台上会输出语句,证明该路径成功访问到了服务器,并且执行到了service层和dao层的代码。

最后

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。返回搜狐,查看更多

责任编辑:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea 代码格式化插件_IDEA非常棒的插件,阿里巴巴约定成文的代码公约规范

无规矩,不方圆。每个人都有自己的编码风格,每个公司也有自己的代码规范。规范的代码,无论是自己日常维护,还是以后接盘者来接盘,都能快速定位上手,大大提高效率。作为一个IDEA万年爱好者,这些最…

java der pem_JAVA解析各种编码密钥对(DER、PEM、openssh公钥)

一、DER编码密钥对先说下DER编码,是因为JCE本身是支持DER编码密钥对的解析的,可以参见PKCS8EncodedKeySpec和X509EncodedKeySpec.DER编码是ASN.1编码规则中的一个子集,具体格式如何编排没有去了解,但最终呈现肯定的是一堆有规律的…

switch最大选项数目_随时随地学习C语言之3—if和switch哪个效率高?

之前学习C语言的时候,我经常有一个疑问,既然有if-else if-else结构的多分支选择语句,C语言为何还要制定switch这种多分支选择语句呢?直到两年前在分析ARM平台C语言反汇编代码的时候,才终于明白了switch-case这种结构存…

android java 退出程序_android开发两种退出程序方式(killProcess,System.exit)

KillProcess:在android中我们如果想要程序的进程结束可以这样写:android.os.Process.killProcess(android.os.Process.myPid());这样就可以从操作系统中结束掉当前程序的进程。注意:android中所有的activity都在主进程中,在Androi…

java 验证码_Java - 验证码 - 由Kaptcha组件实现

本文是基于SpringBoot整合Kaptcha验证码实现Kaptcha 是一个可高度配置的实用验证码生成工具,在项目开发中能够非常方便实现验证码先来看一个由 Kaptcha 制作的验证码效果图快速进入如何进行配置与实现的第1步:配置 Kaptcha 的依赖库com.github.penggle …

bat关闭java_通过bat脚本停止java进程的三个方法

通过bat脚本停止java进程的三个方法1.拷贝java.exe启动时复制java.exe程序修改进程映像名,然后通过映像名杀进程。栗子过程操作拷贝程序拷贝一份java.exe程序,重名为tstop.exe,放在PATH下。修改启动脚本echo offtitle tstoptstop -jar …/lib/laucher.ja…

onclick 获取img 里面的id_红魔5S游戏手机如何解锁bl获取第三方面具root权限

自从苹果阵营发布S系列,安卓系列也学习苹果的步伐,开始发布S系列,这不努比亚也发不了今年夏天的游戏手机,红魔5S游戏手机。红魔5S相对于红魔5其实从配置来看,三大件配置变化并不大,主要还是细节上的一些提升…

java 工厂模式的写法_设计模式-工厂模式

一、概述什么是工厂模式?工厂模式(Factory Pattern)是最常见的一种设计模式之一。它主要是提供一种创建对象的最佳方法!为什么要学习工厂模式?与通过new来创建对象不同,使用工厂模式创建对象不会对客户端暴露创建逻辑,…

jackson 序列化_jackson序列化与反序列化的应用实践

作者 | zhouweixin 来源 | urlify.cn/iEbiAz66套java从入门到精通实战课程分享1 相关概念序列化: 把对象转换为字节序列的过程称为对象的序列化反序列化: 把字节序列恢复为对象的过程称为对象的反序列化2 序列化的作用用于把内存中的对象状态保存到一个文件中或者数据库中用于网…

layui中table监听单元格_layui table表格 监听头删除不请求后台

表格jsfunction getTable() {var table layui.table //表格var username$("#username").val();//执行一个 table 实例table.render({elem: #demo,where: {username:username}//传值,method: post//请求方式,height: 420,url: ${path}/sys/admin/getAllUser //数据接…

java mqtt客户端_基于 t-io 实现一个 mqtt5 协议之 mica-mqtt

一、简介 MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的“轻量级”消息协议,由 IBM 发布。目前使用比较广泛的就是 mqtt 3.1.1(2014年制定),mqtt 5.0&…

python的gui库_tkinter——python的GUI标准库

-- coding:utf-8 --import tkinter as tkwindowtk.Tk()#一个窗口对象window.title("tkinter")#窗口名称window.geometry("200x200")#字符串形式表示长宽 中间是xlatk.Label(window,text"我是鬼畜窗口\nnb",bg"red",font("Ariel&q…

java rc4_nodejs 和 java 进行 rc4 加密得到的结果不一样

同时在对一个buffer<03 01 00 00 02 00 00 00>进行加密。java 和 c 得到的结果是CA 66 C4 5D 90 E7 30 01nodejs 得到的结果是6f 61 f8 95 ab ba aa 90不一样 什么原因导致的呢&#xff1f;import java.nio.ByteBuffer;import javax.crypto.Cipher;import javax.crypto.s…

python3闭包通俗解释_Python|闭包、装饰器,简单的实例,通俗的理解

闭包和装饰器都是属于函数的语法范畴&#xff0c;是在函数定义中以另一个函数做为形参的语法机制。1 闭包(Closurer)闭包是定义内部函数的一种语法规则&#xff0c;要理解闭包&#xff0c;请看下面的实例&#xff1a;def outer(t):....print(t)....def inner(i):........return…

java自我介绍_JAVA面试技巧之自我介绍

【如何进行自我介绍】自我介绍这个问题&#xff0c;不用多说了&#xff0c;面试必定会问&#xff01;如果想要在自我介绍的时候就能够打动面试官&#xff0c;吸引面试官对我们的兴趣&#xff0c;那么像我们这种接受过Java培训的程序员的自我介绍当然不能和应届生或者其他非技术…

java excel 操作 poi_Java使用apache poi进行excel相关操作

一.基本介绍1.1、Apache POI介绍Apache POI是一个可以进行微软的文档进行开源库&#xff0c;可以操作的文档类型包括word、ppt、excel、visio、outlook....本文主要针对Apache POI对excel的操作进行介绍&#xff0c;主要包括如何创建一个excel、录入数据、读取excel数据的方式。…

程序解析excel中的图片_产品日志丨支持导入Excel中的图片amp;批量修改后期实体字段...

本次安捷秀又迎来了一个大版本更新&#xff0c;除了大家呼声很高的「实体模块导入 Excel 」外&#xff0c;还有「批量编辑实体」&#xff0c;「支持右击修改」以及针对海外用户的「全页面支持英文」等功能的新增与优化&#xff0c;一起来看看吧。导入功能优化AGILESHOT&#xf…

java随机星星怎么闪_canvas画随机闪烁的星星

canvas画一颗星星&#xff1a;规则的星星有内切圆和外切圆&#xff0c;每两个点之间的角度是固定的&#xff0c;因此可得到星星的每个点的坐标&#xff0c;画出星星。function drawStars(x,y,radius1,radius2,num,drawType,color){var angle 360/(num*2);var arr [];for(var …

java 四种内存_不可访问内存 Java四种引用包括强引用,软引用,弱引用,虚引用...

小结&#xff1a;1、不可访问内存是指一组没有任何可访问指针指向的由计算机程序进行动态分配的内存块。2、垃圾收集器能决定是否一个对象还是可访问的&#xff1b;任何被确定不可访问的对象将会被释放。https://zh.wikipedia.org/wiki/不可访问内存在计算机科学中&#xff0c;…

python async_python async with和async for的使用

网上async with和async for的中文资料比较少&#xff0c;我把PEP 492中的官方陈述翻译一下。异步上下文管理器”async with”异步上下文管理器指的是在enter和exit方法处能够暂停执行的上下文管理器。为了实现这样的功能&#xff0c;需要加入两个新的方法&#xff1a;__aenter_…