spring各对用jar包及spring常用注解

1.spring的各个jar包的作用
org.springframework.aop-3.0.0.RELEASE--------------------Spring的面向切面编程,提供AOP(面向切面编程)实现
org.springframework.asm-3.0.0.RELEASE--------------------Spring独立的asm程序,相遇Spring2.5.6的时候需要asmJar 包.3.0开始提供他自己独立的asmJar
org.springframework.aspects-3.0.0.RELEASE----------------Spring提供对AspectJ框架的整合\
org.springframework.beans-3.0.0.RELEASE------------------SpringIoC(依赖注入)的基础实现
org.springframework.context.support-3.0.0.RELEASE--------Spring-context的扩展支持,用于MVC方面
org.springframework.context-3.0.0.RELEASE----------------Spring提供在基础IoC功能上的扩展服务,此外还提供许多企业级服务的支持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及各种视图层框架的封装等
org.springframework.core-3.0.0.RELEASE-------------------Spring3.0的核心工具包
org.springframework.expression-3.0.0.RELEASE-------------Spring表达式语言
org.springframework.instrument.tomcat-3.0.0.RELEASE------Spring3.0对Tomcat的连接池的集成
org.springframework.instrument-3.0.0.RELEASE-------------Spring3.0对服务器的代理接口
org.springframework.jdbc-3.0.0.RELEASE-------------------对JDBC的简单封装
org.springframework.jms-3.0.0.RELEASE--------------------为简化JMS API的使用而作的简单封装
org.springframework.orm-3.0.0.RELEASE--------------------整合第三方的ORM框架,如hibernate,ibatis,jdo,以及spring的JPA实现
org.springframework.oxm-3.0.0.RELEASE--------------------Spring 对Object/XMl的映射支持,可以让Java与XML之间来回切换
org.springframework.test-3.0.0.RELEASE--------------------对Junit等测试框架的简单封装
org.springframework.transaction-3.0.0.RELEASE-------------为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理
org.springframework.web.portlet-3.0.0.RELEASE-------------SpringMVC的增强
org.springframework.web.servlet-3.0.0.RELEASE-------------对JEE6.0Servlet3.0的支持
org.springframework.web.struts-3.0.0.RELEASE--------------整合Struts的时候的支持
org.springframework.web-3.0.0.RELEASE--------------------SpringWeb下的工具包

2.spring的常用注解
使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能。
    之前在使用Struts2实现MVC的注解时,是借助struts2-convention这个插件,如今我们使用Spring自带的spring-webmvc组件来实现同样的功能,而且比之以前更简单。另外,还省掉了整合两个框架带来的不稳定因素。
    对于Spring MVC框架,我主要讲一下它的常用注解,再结合一些示例进行说明,方便大家能够快速理解。
    一、Spring MVC常用注解说明
    @Controller
    在类上面定义,表明该类为控制器,返回字符串与redirect:xxx
    @RequestMapping
    在类或方法上面使用此注解,设置URL访问地址。它有两个属性,value指定访问路径,method指定指定请求方式,请求方式在RequestMethod这个类中,全部以常量形式定义,它默认使用GET请求。
    @RequestParam
    指定Request请求参数,在方法参数中定义,相当于传统的request.getParameter()。
    @PathVariable
    获取URL访问路径变量,这是Spring MVC 3.0框架才加入的特性,基于RESTful风格的URL访问路径。
    @ModelAttribute
全局式的方法,在一组URL访问路径中,每次都会执行,方法返回结果保存在module会话中。
    @Service
    在类上面定义,指定被注解的类是业务逻辑组件,如果不指定具体的Bean ID,则采用默认命名方式,即类名的首字母小写。之前在SSH2中,大象曾对Dao组件使用@Repository,本例只有业务层,所以就只用@Service注解。
    @Autowired
    IoC自动注入功能,替换以前的set写法,在SSH2中就已经开始使用了。
    @Qualifier
    对同一接口类有不同实现指定具体的实现类。
    @ResponseBody
    同样定义在方法上,Ajax调用声明,指定方法返回结果为Ajax回调函数结果。这是Spring MVC 3.0框架中增加的一个新特性。
    @InitBinder
    初始化数据绑定与类型转换,将传入的参数转换为自定义类型,或者对参数进行自定义处理。
    二、示例  
    @RequestMapping在类名上面定义,相当于指定的URL是此控制器内的所有其它访问路径的父路径。如果在某个方法上面定义@RequestMapping注解,则相对于父路径来说,是其子路径。如果不定义value值,那么按父路径访问就会被默认执行。但请注意,默认的访问方式只能有一个。
    对于UserController的list方法REST访问URL为http://localhost:8080/ssm3/user,而且它同时接收GET和POST两种请求。另外,Spring MVC 3.0有一个很灵活的特性,可以自定义方法参数。看看list方法,我设定了两个参数,一个Model,一个User对象。Model是用来渲染数据,生成页面用的。相当于request.setAttribute,你可以这样理解,但不能就这样认为,Model以及另一个ModelMap,都是作为视图模型传递参数的,它们的作用域为request。除此之外,你还可以定义HttpServletRequest、HttpServletResponse等等各种各样的参数。
如果一个类还要定义其它资源访问怎么办呢?请看下面的RoleController
    在RoleController上定义了全局路径/role,这样一来,对于和角色相关的资源都会以/role开头,比如创建角色/role/new;编辑角色/role/edit/{id}等等。
    上图edit方法中的{id}写法,就是RESTful URL风格,与@PathVariable搭配来一起实现该功能。它表示所请求的URL中,可以将变量值作为参数进行动态的传递。例如:http://localhost:8080/ssm3/role/edit/1,另外,除了可以用数字,还可以用字符串,还可以多定义几个变量:/role/edit/{id}/{type}等等。
    每个方法的返回值,其实都对应着一个结果页面,这一点和struts2-convention这个插件很相像。本例使用FreeMarker模板引擎作为展示层,页面的后缀为.html,页面中除了标准的HTML之外,其余的数据填充,条件判断之类,都要用到FreeMarker指令。
    对于save方法返回值写法表示的是重定向,相当于执行http://localhost:8080/ssm3/role,而这个URL对应的其实就是RoleController这个类里面list方法。如果要带上参数之类的,一定要符合所定义的REST资源路径才可以。

    @ResponseBody用来标识Ajax方法调用,在上面这个方法中,用到了@RequestParam注解,它的作用就和request.getParameter("name")一样。Spring MVC框架支持好几种返回格式,例如:String/JSON/XML等等。不过以这种格式的字符串值形式返回是最简便的一种方式,而且利用JavaScript解析也十分方便。页面调用的时候请用jQuery的$.ajax()这种原生方式来定义,这种写法不会出问题,也很灵活,而且其它几种方式最终也是调用它来完成请求。
      
    对于拥有相同的一组访问规则的URL,如果都需要获得相同的数据,则使用@ModelAttribute注解。以RoleController为例,上面这个注解与方法的含义,相当于是在它里面所有的访问路径方法中都调用这个写法:module.addAttribute(“allRoles”,roleService.getRoles())。也即,不管是访问create还是edit,都会执行preperList,都会获得allRoles这个List。
      
    注册自定义类型编辑器,在Spring MVC中,对于时间类型,框架不会自动帮你转换绑定,需要你自己来定义属性编辑器。除此之外,还可以对某些特殊字符进行转义符处理,都可以放在@InitBinder注解的方法中进行。如果所有的Controller都需要注册相同的属性编辑器,则可以实现WebBindingInitializer接口,定义一个全局的属性编辑器。
    三、在web容器中部署
    想要让Spring MVC框架帮助我们完成工作,就需要在Web容器中配置好它。
      
    DispatcherServlet是Spring MVC的核心,是处理一切请求转发的核心控制器。大象曾在本系列的第二篇文章中就详细描述了Spring MVC的流程结构,如果没什么印象的话请再去看看。
    Spring MVC有一个默认规则,Web容器启动之后,会自动查找/WEB-INF/<servlet-name>.xml这个Spring类型的配置文件。如果想自定义配置文件路径,就按上面的写法,指定contextConfiglocation这个属性,大象采用maven构建项目,所以servlet-context.xml这个配置文件放在resource目录下。
    四、MVC配置
    Spring MVC 3.0对使用和配置作了较大的改进,除了提供注解来简化控制器的开发之外,在配置文件上面也进行了简化。
      
    基于Spring MVC注解的配置就是上面这两行,还有一种更简化的配置写法是只写这一句:<mvc:annotation-driven />就可以了,Spring启动的时候会自动注册上面这两个bean。为什么大象要在这里显示的注册两个bean呢?因为,我们在真正使用的时候,一般来说,使用默认的方式满足不了我们的系统或业务要求。比如拦截器,比如数据验证,比如返回消息格式转换等等一些自定义设置。他们都需要配置在这两个bean里面。因为本例是用来作为入门教程,所以这些东西都没有加进来。
    DefaultAnnotationHandlerMapping这个类是将所有标注了@RequestMapping注解的Controller类,都放到了一个HandlerMapping对象中,当有请求时,就在这个对象中进行查找是否有与之匹配的路径,AnnotationMethodHandlerAdapter是管理所有@RequestMapping注解的方法。

转载自: http://www.oschina.net/code/snippet_1165954_23354

  •                     <li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true">
                            <use xlink:href="#csdnc-thumbsup"></use>
                        </svg><span class="name">点赞</span>
                        <span class="count">1</span>
                        </a></li>
                        <li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{&quot;mod&quot;:&quot;popu_824&quot;}"><svg class="icon" aria-hidden="true">
                            <use xlink:href="#icon-csdnc-Collection-G"></use>
                        </svg><span class="name">收藏</span></a></li>
                        <li class="tool-item tool-active is-share"><a href="javascript:;"><svg class="icon" aria-hidden="true">
                            <use xlink:href="#icon-csdnc-fenxiang"></use>
                        </svg>分享</a></li>
                        <!--打赏开始-->
                                                <!--打赏结束-->
                                                <li class="tool-item tool-more">
                            <a>
                            <svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg>
                            </a>
                            <ul class="more-box">
                                <li class="item"><a class="article-report">文章举报</a></li>
                            </ul>
                        </li>
                                            </ul>
                </div>
                            </div>
            <div class="person-messagebox">
                <div class="left-message"><a href="https://blog.csdn.net/wangcunhuazi">
                    <img src="https://profile.csdnimg.cn/D/4/F/3_wangcunhuazi" class="avatar_pic" username="wangcunhuazi">
                                            <img src="https://g.csdnimg.cn/static/user-reg-year/2x/7.png" class="user-years">
                                    </a></div>
                <div class="middle-message">
                                        <div class="title"><span class="tit"><a href="https://blog.csdn.net/wangcunhuazi" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;}" target="_blank">平凡的华仔</a></span>
                                            </div>
                    <div class="text"><span>发布了72 篇原创文章</span> · <span>获赞 29</span> · <span>访问量 130万+</span></div>
                </div>
                                <div class="right-message">
                                            <a href="https://bbs.csdn.net/topics/395530431" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-messageboard">他的留言板
                        </a>
                                                            <a class="btn btn-sm  bt-button personal-watch" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;}">关注</a>
                                    </div>
                            </div>
                    </div>
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用Spring AOP需要依赖以下jar包: 1. spring-aop: 核心AOP包,提供了AOP的基本功能。 2. aspectjweaver: AspectJ是一个基于Java的面向切面编程框架,Spring AOP通过aspectjweaver包与AspectJ集成。 3. spring-beans: 提供了Spring中的Bean管理功能。 4. spring-context: 提供了上下文(context)相关的功能,包括对AOP的支持。 此外,你还需要引入Spring核心包(spring-core)和Spring上下文(spring-context),以支持Spring AOP的基本功能。 ### 回答2: 使用Spring AOP需要依赖以下几个核心的jar包: 1. spring-core.jar:这是Spring框架的核心包,包含了Spring中的基本功能和核心类。 2. spring-aop.jar:这个jar包含了Spring AOP模块的实现代码。 3. spring-beans.jar:这个jar包含了Spring中的Bean的相关功能和类。 4. aspectjrt.jar:这是AspectJ的运行时库,Spring AOP实际上是对AspectJ AOP实现的封装,因此需要使用AspectJ的运行时库。 5. aspectjweaver.jar:这是AspectJ的织入器,用于在运行时将切面织入到目标对象中。 除了以上核心的jar包外,还可能需要依赖其他的jar包,具体情况取决于你在使用Spring AOP时用到的功能和组件。例如,如果你使用了Spring的事务管理功能,可能还需要依赖spring-tx.jar;如果你使用了Spring注解功能,可能还需要依赖spring-context.jar等。 总之,使用Spring AOP需要依赖的jar包主要包括spring-core.jar、spring-aop.jar、spring-beans.jar、aspectjrt.jar和aspectjweaver.jar,同时还可能需要依赖其他的相关jar包

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值