fbpx

[email protected]

购物车

 查看订单

  • 我的帐户
东东购 | EasternEast
  • 中文书店
    • 畅销排行榜
      • 小说 畅销榜
      • 童书 畅销榜
      • 外语畅销榜
      • 管理畅销榜
      • 法律畅销榜
      • 青春文学畅销榜
    • 热门分类
      • 社会小说
      • 成功/励志 畅销榜
      • 人物传记
      • 大陆原创
      • 绘本童书
      • 影视小说
    • 文学推荐
      • 文集
      • 戏剧
      • 纪实文学
      • 名家作品
      • 民间文学
      • 中国现当代随笔
    • 新书热卖榜
      • 小说 新书热卖榜
      • 青春文学 新书热卖榜
      • 童书 新书热卖榜
      • 管理 新书热卖榜
      • 成功/励志 新书热卖榜
      • 艺术 新书热卖榜
  • 精选分类
    • 小说
    • 保健养生
    • 烹饪/美食
    • 风水/占卜
    • 青春文学
    • 童书
    • 管理
    • 成功/励志
    • 文学
    • 哲学/宗教
    • 传记
    • 投资理财
    • 亲子家教
    • 动漫/幽默
    • 法律 Legal
    • 经济 Economics
    • 所有分类
  • 关于东东
  • 帮我找书
搜索
首页计算机/网络程序设计Java EE框架整合开发入门到实战——Spring+Spring MVC+MyBatis(微课版)

Java EE框架整合开发入门到实战——Spring+Spring MVC+MyBatis(微课版)

几十小时视频详解+完整项目案例+超值学习资源

作者:陈恒、楼偶俊、张立杰 出版社:清华大学出版社 出版时间:2018年08月 

ISBN: 9787302502968
年中特卖用“SALE15”折扣卷全场书籍85折!可与三本88折,六本78折的优惠叠加计算!全球包邮!
trust badge

EUR €40.99

类别: 程序设计 SKU:5d85b4d25f98494bcc1274da 库存: 有现货
  • 描述
  • 评论( 0 )

描述

开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302502968丛书名: 从入门到实战·微课视频

产品特色

编辑推荐

零基础入门,注重实战视频教学,全程语音讲解教学资源丰富

 

内容简介

本书详细讲解了Java EE中Spring、Spring MVC和MyBatis三大框架(SSM)的基础知识和实际应用。为了更好地帮助读者学习SSM框架,本书以大量案例介绍了SSM框架的基本思想、方法和技术。   全书共20章,分四部分介绍。第1~5章为第1部分,主要讲解Spring框架的相关知识,内容包括Spring入门、Spring IoC、Spring Bean、Spring AOP以及Spring的事务管理;第6~8章为第2部分,主要讲解MyBatis的相关知识,内容包括MyBatis开发入门、映射器以及动态SQL;第9~18章为第3部分,主要讲解Spring MVC的相关知识,内容包括Spring MVC入门、Controller、类型转换和格式化、数据绑定和表单标签库、拦截器、数据验证、国际化、统一异常处理、文件的上传和下载以及EL与JSTL;第19章、第20章为第4部分,主要讲解SSM框架整合的基本思想与实战开发,内容包括SSM框架整合以及基于SSM框架的电子商务平台的设计与实现。本书突出实用性、趣味性,内容组织合理、通俗易懂,使读者能够快速掌握SSM框架的基础知识、编程技巧以及完整的开发体系,从而为大型项目开发打下坚实的基础。   本书附有教学视频、源代码、课件、教学大纲、习题答案等配套资源,可以作为大学计算机及相关专业的教材或教学参考书,也可以作为Java技术的培训教材,同时适合广大Java EE应用开发人员阅读与使用。

前  言

本书适用于具有Java编程基础和一定Java Web相关知识的读者学习。  本书使用Spring 5.0.2 Spring MVC 5.0.2 MyBatis 3.4.5版本详细讲解了SSM三大框架的基础知识和使用方法。本书的重点不是简单地介绍三大框架的基础知识,而是精心设计了大量实例。读者通过本书可以快速地掌握SSM框架的实战应用,提高Java EE应用的开发能力。  全书共20章,各章的具体内容如下:  第1章主要讲解Spring框架入门的一些基础知识,包括Spring框架的体系结构、核心容器、开发环境以及入门程序等内容。  第2章主要介绍Spring IoC的基本概念、Spring IoC容器以及依赖注入的类型等内容。  第3章对Spring中的Bean进行详细介绍,包括Spring Bean的配置、实例化、作用域、生命周期以及装配方式等内容。  第4章介绍AOP的相关知识,包括AOP的概念和术语、动态代理以及AOP的实现和AspectJ的开发等内容。  第5章主要介绍Spring框架所支持的事务管理,包括编程式事务管理和声明式事务管理。  第6章主要讲解MyBatis环境的构建、MyBatis的工作原理以及与Spring框架的整合开发。  第7章对MyBatis的核心配置进行详细讲解,包括MyBatis配置文件、映射文件以及级联查询。  第8章主要讲解如何拼接MyBatis的动态SQL语句。  第9章主要讲解MVC的设计思想以及Spring MVC的工作原理。  第10章详细讲解基于注解的控制器,包括Controller注解和RequestMapping注解类型的使用,是Spring MVC框架的重点内容之一。  第11章介绍类型转换器和格式化转换器,包括内置的类型转换器和格式化转换器以及自定义类型转换器和格式化转换器等内容。  第12章讲解数据绑定和表单标签库,是Spring MVC框架的重点内容之一。  第13章主要介绍拦截器的概念、原理以及实际应用。  第14章详细讲解Spring MVC框架的输入验证体系,包括Spring验证和JSR 303验证等内容。  第15章介绍Spring MVC国际化的实现方法,包括JSP页面信息国际化以及错误消息国际化等内容。  第16章详细讲解如何使用Spring MVC框架进行异常的统一处理,是Spring MVC框架的重点内容之一。  第17章讲解如何使用Spring MVC框架进行文件的上传与下载。  第18章介绍EL与JSTL的基本用法。  第19章主要讲解SSM框架整合环境的构建,包括整合思路、整合所需JAR包以及整合应用测试等内容。  第20章以电子商务平台的设计与实现为综合案例,讲述如何使用SSM(Spring Spring MVC MyBatis)框架整合开发一个Web应用。  为便于教学,本书有教学视频、源代码、课件、教学大纲、习题答案等配套资源,读者可以扫描封底课件二维码免费下载。  由于编者水平有限,书中难免会有不足之处,敬请广大读者批评指正。
                                                          编  者                           2018年5月

免费在线读

Spring Bean  学习目的与要求  本章主要介绍Spring Bean的配置、实例化、作用域、生命周期以及装配方式等内容。通过本章的学习,读者能够了解Spring Bean的生命周期,掌握Spring Bean的配置、实例化、作用域以及装配方式等内容。  本章主要内容   Bean的配置;   Bean的实例化;   Bean的作用域;   Bean的生命周期;   Bean的装配方式。  在Spring的应用中,Spring IoC容器可以创建、装配和配置应用组件对象,这里的组件对象称为Bean。本章将重点介绍如何将Bean装配注入到Spring IoC容器中。3.1  Bean的配置  Spring可以看作一个大型工厂,用于生产和管理Spring容器中的Bean。如果要使用    这个工厂生产和管理Bean,需要开发者将Bean配置在Spring的配置文件中。Spring框     架支持XML和Properties两种格式的配置文件,在实际开发中常用XML格式的配置      文件。  从前面的学习得知XML配置文件的根元素是,中包含了多个子元素,每个元素定义一个Bean,并描述Bean如何被装配到Spring容器中。元素的常用属性及其子元素如表3.1所示。表3.1  元素的常用属性及其子元素属性或子元素名称描    述 idBean在BeanFactory中的唯一标识,在代码中通过BeanFactory获取Bean实例时需要以此作为索引名称 classBean的具体实现类,使用类的名(例如dao.TestDIDaoImpl) scope指定Bean实例的作用域,具体属性值及含义参见3.3节“Bean的作用域” 元素的子元素,使用构造方法注入,指定构造方法的参数。该元素的index属性指定参数的序号,ref属性指定对BeanFactory中其他Bean的引用关系,type属性指定参数类型,value属性指定参数的常量值 元素的子元素,用于设置一个属性。该元素的name属性指定Bean实例中相应的属性名称,value属性指定Bean的属性值,ref属性指定属性对BeanFactory中其他Bean的引用关系 元素的子元素,用于封装 List或数组类型的依赖注入,具体用法参见3.5节“Bean的装配方式” 

元素的子元素,用于封装 Map类型的依赖注入,具体用法参见3.5节“Bean的装配方式” 元素的子元素,用于封装Set类型的依赖注入,具体用法参见3.5节“Bean的装配方式” 

元素的子元素,用于设置一个键值对,具体用法参见3.5节“Bean的装配    方式”    Bean的配置示例代码如下:                                                                                        3.2  Bean的实例化  在面向对象编程中,如果想使用某个对象,需要事先实例化该对象。同样,在Spring框架中,如果想使用Spring容器中的Bean,也需要实例化Bean。Spring框架实例化Bean有3种方式,即构造方法实例化、静态工厂实例化和实例工厂实例化(其中,最常用的方法是构造方法实例化)。3.2.1  构造方法实例化  在Spring框架中,Spring容器可以调用Bean对应类中的无参数构造方法来实例化Bean,这种方式称为构造方法实例化。下面通过ch3应用来演示构造方法实例化的过程。  创建Web应用ch3  创建一个名为ch3的Web应用,并导入Spring支持和依赖的JAR包,ch3的目录结构如图3.1所示。
图3.1  ch3的目录结构  创建BeanClass类  在ch3的src目录下创建instance包,并在该包中创建BeanClass类,代码如下:       package instance;     public class BeanClass {         public String message;         public BeanClass() {             message = “构造方法实例化Bean”;         }         public BeanClass(String s) {             message = s;         }     }    创建配置文件  在ch3的src目录下创建Spring的配置文件applicationContext.xml,在配置文件中定义一个id为constructorInstance的Bean,代码如下:                                       创建测试类  在ch3的src目录下创建test包,并在该包下创建测试类TestInstance,代码如下:       package test;     import org.springframework.context.ApplicationContext;     import org.springframework.context.support.ClassPathXmlApplicationContext;     import instance.BeanClass;     public class TestInstance {         public static void main(String[] args) {             //初始化Spring容器ApplicationContext,加载配置文件             ApplicationContext appCon = new ClassPathXmlApplicationContext        (“applicationContext.xml”);             //测试构造方法实例化Bean             BeanClass b1 = (BeanClass)appCon.getBean(“constructorInstance”);             System.out.println(b1 b1.message);         }     }    运行上述测试类,控制台的输出结果如图3.2所示。
图3.2  构造方法实例化Bean的运行结果3.2.2  静态工厂实例化  在使用静态工厂实例化Bean时要求开发者在工厂类中创建一个静态方法来创建Bean的实例。在配置Bean时,class属性指定静态工厂类,同时还需要使用factory-method属性指定工厂类中的静态方法。下面通过ch3应用测试静态工厂实例化。  创建工厂类BeanStaticFactory  在instance包中创建工厂类BeanStaticFactory,该类中有一个静态方法来实例化对象,具体代码如下:       package instance;     public class BeanStaticFactory {         private static BeanClass beanInstance = new BeanClass(“调用静态工厂方法    实例化Bean”);         public static BeanClass createInstance() {             return beanInstance;         }     }    编辑配置文件  在配置文件applicationContext.xml中添加如下配置代码:                添加测试代码  在测试类TestInstance中添加如下代码:       //测试静态工厂方法实例化Bean     BeanClass b2 = (BeanClass)appCon.getBean(“staticFactoryInstance”);     System.out.println(b2 b2.message);    此时,测试类的运行结果如图3.3所示。
图3.3  实例化Bean的运行结果3.2.3  实例工厂实例化  在使用实例工厂实例化Bean时要求开发者在工厂类中创建一个实例方法来创建  Bean的实例。在配置Bean时需要使用factory-bean属性指定配置的实例工厂,同时还需要使用factory-method属性指定实例工厂中的实例方法。下面通过ch3应用测试实例工厂实例化。  创建工厂类BeanInstanceFactory  在instance包中创建工厂类BeanInstanceFactory,该类中有一个实例方法来实例化对象,具体代码如下:       package instance;     public class BeanInstanceFactory {         public BeanClass createBeanClassInstance() {             return new BeanClass(“调用实例工厂方法实例化Bean”);         }     }    编辑配置文件  在配置文件applicationContext.xml中添加如下配置代码:                                  添加测试代码  在测试类TestInstance中添加如下代码:       //测试实例工厂方法实例化Bean     BeanClass b3=(BeanClass)appCon.getBean(“instanceFactoryInstance”);     System.out.println(b3 b3.message);    此时,测试类的运行结果如图3.4所示。
图3.4  实例化Bean的运行结果3.3  Bean的作用域  在Spring中不仅可以完成Bean的实例化,还可以为Bean指定作用域。在Spring 5.0中为Bean的实例定义了如表3.2所示的作用域。表3.2  Bean的作用域作用域名称描    述singleton默认的作用域,使用singleton定义的Bean在Spring容器中只有一个Bean实例prototypeSpring容器每次获取prototype定义的Bean,容器都将创建一个新的Bean实例request在一次HTTP请求中容器将返回一个Bean实例,不同的HTTP请求返回不同的Bean实例。仅在Web Spring应用程序上下文中使用session在一个HTTP Session中,容器将返回同一个Bean实例。仅在Web Spring应用程序上下文中使用application为每个ServletContext对象创建一个实例,即同一个应用共享一个Bean实例。仅在Web Spring应用程序上下文中使用websocket为每个WebSocket对象创建一个Bean实例。仅在Web Spring应用程序上下文中使用    在表3.2所示的6种作用域中,singleton和prototype是最常用的两种,后面4种作用域仅在Web Spring应用程序上下文中使用,在本节将会对singleton和prototype进行详细的讲解。3.3.1  singleton作用域  当将bean的scope设置为singleton时,Spring IoC容器仅生成和管理一个Bean实例。在使用id或name获取Bean实例时,IoC容器将返回共享的Bean实例。  由于singleton是scope的默认方式,因此有两种方式将bean的scope设置为singleton。配置文件示例代码如下:         或           测试singleton作用域,代码如下:       package test;     import org.springframework.context.ApplicationContext;     import org.springframework.context.support.ClassPathXmlApplicationContext;     import instance.BeanClass;     public class TestInstance {         public static void main(String[] args) {             //初始化Spring容器ApplicationContext,加载配置文件             ApplicationContext appCon = new ClassPathXmlApplicationContext        (“applicationContext.xml”);             //测试构造方法实例化Bean             BeanClass b1 = (BeanClass)appCon.getBean(“constructorInstance”);             System.out.println(b1);             BeanClass b2 = (BeanClass)appCon.getBean(“constructorInstance”);             System.out.println(b2);              }     }    上述测试代码的运行结果如图3.5所示。
图3.5  singleton作用域的运行结果  从图3.5所示的运行结果可以得知,在使用id或name获取Bean实例时,IoC容器仅返回同一个Bean实例。3.3.2  prototype作用域  当将bean的scope设置为prototype时,Spring IoC容器将为每次请求创建一个新的实例。如果将3.3.1中bean的配置修改如下:         则TestInstance的运行结果如图3.6所示。
图3.6  prototype作用域的运行结果  从图3.6所示的运行结果可以得知,在使用id或name两次获取Bean实例时,IoC容器将返回两个不同的Bean实例。3.4  Bean的生命周期  一个对象的生命周期包括创建(实例化与初始化)、使用以及销毁等阶段,在Spring中,Bean对象周期也遵循这一过程,但是Spring提供了许多对外接口,允许开发者对3个过程(实例化、初始化、销毁)的前后做一些操作。在Spring Bean中,实例化是为Bean对象开辟空间,初始化则是对属性的初始化。  Spring容器可以管理singleton作用域Bean的生命周期,在此作用域下,Spring能够精确地知道Bean何时被创建,何时初始化完成,以及何时被销毁。而对于prototype作用域的Bean,Spring只负责创建,当容器创建了Bean的实例后,Bean实例就交给了客户端的代码管理,Spring容器将不再跟踪其生命周期,并且不会管理那些被配置成prototype作用域的Bean。Spring中Bean的生命周期的执行是一个很复杂的过程,可借鉴Servlet的生命周期“实例化→初始化(init)→接收请求(service)→销毁(destroy)”来理解Bean的生命周期。  Bean的生命周期的整个过程如下:  (1)根据Bean的配置情况实例化一个Bean。  (2)根据Spring上下文对实例化的Bean进行依赖注入,即对Bean的属性进行初     始化。  (3)如果Bean实现了BeanNameAware接口,将调用它实现的setBeanName(String  beanId)方法,此处参数传递的是Spring配置文件中Bean的id。  (4)如果Bean实现了BeanFactoryAware接口,将调用它实现的setBeanFactory方法,此处参数传递的是当前Spring工厂实例的引用。  (5)如果Bean实现了ApplicationContextAware接口,将调用它实现的setApplication Context(ApplicationContext)方法,此处参数传递的是Spring上下文实例的引用。  (6)如果Bean关联了BeanPostProcessor接口,将调用初始化方法postProcess BeforeInitialization(Object obj, String s)对Bean进行操作。  (7)如果Bean实现了InitializingBean接口,将调用afterPropertiesSet方法。  (8)如果Bean在Spring配置文件中配置了init-method属性,将自动调用其配置的初始化方法。  (9)如果Bean关联了BeanPostProcessor接口,将调用postProcessAfterInitialization (Object obj, String s)方法,由于是在Bean初始化结束时调用After方法,也可用于内存或缓存技术。    注意:以上工作完成后就可以使用该Bean,由于该Bean的作用域是singleton,所以调用的是同一个Bean实例。    (10)当Bean不再需要时将进入销毁阶段,如果Bean实现了DisposableBean接口,则调用其实现的destroy方法将Spring中的Bean销毁。  (11)如果在配置文件中通过destroy-method属性指定了Bean的销毁方法,将调用其配置的销毁方法进行销毁。  在Spring中,通过实现特定的接口或通过元素的属性设置可以对Bean的生命周期过程产生影响。开发者可以随意地配置元素的属性,但不建议过多地使用Bean实现接口,因为这样将使代码和Spring聚合比较紧密。下面通过一个实例演示Bean的生命周期。  创建Bean的实现类  在ch3应用的src目录中创建life包,在life包下创建BeanLife类。在BeanLife类中有两个方法,一个演示初始化过程,一个演示销毁过程。具体代码如下:       package life;     public class BeanLife {         public void initMyself() {             System.out.println(this.getClass().getName() “执行自定义的初始化方法”);         }         public void destroyMyself() {             System.out.println(this.getClass().getName() “执行自定义的销毁方法”);         }     }    配置Bean  在Spring配置文件中使用实现类BeanLife配置一个id为beanLife的Bean,具体代码如下:                测试生命周期  在ch3应用的test包中创建测试类TestLife,具体代码如下:       package test;     import org.springframework.context.support.ClassPathXmlApplicationContext;     import life.BeanLife;     public class TestLife {         public static void main(String[] args) {             //初始化Spring容器,加载配置文件             //为了方便演示销毁方法的执行,这里使用ClassPathXmlApplicationContext             //实现类声明容器             ClassPathXmlApplicationContext ctx =              new ClassPathXmlApplicationContext(“applicationContext.xml”);             System.out.println(“获得对象前”);             BeanLife blife = (BeanLife)ctx.getBean(“beanLife”);             System.out.println(“获得对象后” blife);             ctx.close();  //关闭容器,销毁Bean对象         }     }    上述测试类的运行结果如图3.7所示。
图3.7  Bean的生命周期演示效果  从图3.7中可以看出,在加载配置文件时执行了Bean的初始化方法initMyself;在获得对象后,关闭容器时,执行了Bean的销毁方法destroyMyself。3.5  Bean的装配方式  Bean的装配可以理解为将Bean依赖注入到Spring容器中,Bean的装配方式即Bean依赖注入的方式。Spring容器支持基于XML配置的装配、基于注解的装配以及自动装配等多种装配方式,其中最受青睐的装配方式是基于注解的装配(在本书后续章节中采用基于注解的装配方式装配Bean)。本节将主要讲解基于XML配置的装配和基于注解的装配。3.5.1  基于XML配置的装配  基于XML配置的装配方式已经有很久的历史了,曾经是主要的装配方式。通过2.3节的学习,我们知道Spring提供了两种基于XML配置的装配方式,即使用构造方法注入和使用属性的setter方法注入。  在使用构造方法注入方式装配Bean时,Bean的实现类需要提供带参数的构造方法,并在配置文件中使用元素的子元素来定义构造方法的参数;在使用属性的setter方法注入方式装配Bean时,Bean的实现类需要提供一个默认无参数的构造方法,并为需要注入的属性提供对应的setter方法,另外还需要使用元素的子元素为每个属性注入值。  下面通过一个实例来演示基于XML配置的装配方式。  创建Bean的实现类  在ch3应用的src目录中创建assemble包,在assemble包下创建ComplexUser类。在ComplexUser类中分别使用构造方法注入和使用属性的setter方法注入。具体代码如下:       package assemble;     import java.util.List;     import java.util.Map;     import java.util.Set;     public class ComplexUser {         private String uname;         private List hobbyList;         private Map residenceMap;         private Set aliasSet;         private String[] array;         /*          * 使用构造方法注入,需要提供带参数的构造方法          */         public ComplexUser(String uname, List hobbyList, Map residenceMap, Set aliasSet,String[] array) {             super();             this.uname=uname;             this.hobbyList=hobbyList;             this.residenceMap=residenceMap;             this.aliasSet=aliasSet;             this.array=array;         }         /**          * 使用属性的setter方法注入,提供默认无参数的构造方法,并为注入的属性提供setter方法          */         public ComplexUser() {             super();         }         /*****此处省略所有属性的setter方法******/         @Override         public String toString() {             return “uname=” uname “;hobbyList=” hobbyList “;residenceMap=”           residenceMap “;aliasSet=” aliasSet “;array=” array;         }     }    配置Bean  在Spring配置文件中使用实现类ComplexUser配置Bean的两个实例,具体代码如下:                                                                   唱歌                   跳舞                   爬山                                             

                                                                      

                                                   陈恒100                   陈恒101                   陈恒102                                                                   aaaaa                   bbbbb                                                                                                        看书                   学习Spring                                               

                                                                      

                                                     陈恒103                   陈恒104                   陈恒105                                                                   cccccc                   dddddd                                     测试基于XML配置的装配方式  在ch3应用的test包中创建测试类TestAssemble,具体代码如下:       package test;     import org.springframework.context.ApplicationContext;     import org.springframework.context.support.ClassPathXmlApplicationContext;     import assemble.ComplexUser;     public class TestAssemble {         public static void main(String[] args) {             ApplicationContext appCon = new ClassPathXmlApplicationContext   (“applicationContext.xml”);             //使用构造方法装配测试             ComplexUser u1=(ComplexUser)appCon.getBean(“user1”);             System.out.println(u1);             //使用setter方法装配测试             ComplexUser u2 = (ComplexUser)appCon.getBean(“user2”);             System.out.println(u2);         }     }    上述测试代码的运行结果如图3.8所示。
图3.8  基于XML配置的装配方式的测试结果3.5.2  基于注解的装配  在Spring框架中,尽管使用XML配置文件可以很简单地装配Bean,但如果应用中有大量的Bean需要装配,会导致XML配置文件过于庞大,不方便以后的升级与维护,因此更多的时候推荐开发者使用注解(annotation)的方式去装配Bean。  在Spring框架中定义了一系列的注解,下面介绍几种常用的注解。  @Component  该注解是一个泛化的概念,仅仅表示一个组件对象(Bean),可以作用在任何层次上。下面通过一个实例讲解@Component。  1)创建Bean的实现类  在ch3应用的src目录下创建annotation包,在该包下创建Bean的实现类AnnotationUser,代码如下:       package annotation;     import org.springframework.beans.factory.annotation.Value;     import org.springframework.stereotype.Component;     @Component()     /**相当于@Component(“annotationUser”)或@Component(value = “annotationUser”), annotationUser为Bean的id,默认为首字母小写的类名**/     public class AnnotationUser {         @Value(“chenheng”)  //只注入了简单的值,对于复杂值的注入目前使用该方式还解决不了         private String uname;         /**省略setter和getter方法**/     }    2)配置注解  现在有了Bean的实现类,但还不能进行测试,因为Spring容器并不知道去哪里扫描Bean对象,需要在配置文件中配置注解,方式如下:           在ch3应用的src目录下创建配置文件annotationContext.xml,代码如下:                                       3)测试Bean实例  在test包中创建测试类TestAnnotation,测试上述Bean,具体测试代码如下:       package test;     import org.springframework.context.ApplicationContext;     import org.springframework.context.support.ClassPathXmlApplicationContext;     import annotation.AnnotationUser;     public class TestAnnotation {         public static void main(String[] args) {             ApplicationContext appCon = new ClassPathXmlApplicationContext       (“annotationContext.xml”);             AnnotationUser au = (AnnotationUser)appCon.getBean(“annotationUser”);             System.out.println(au.getUname());         }     }    注:在Spring 4.0以上的版本,配置注解指定包中的注解进行扫描前需要事先导入Spring AOP的JAR包spring-aop-5.0.2.RELEASE.jar。  @Repository  该注解用于将数据访问层(DAO)的类标识为Bean,即注解数据访问层Bean,其功能与@Component相同。  @Service  该注解用于标注一个业务逻辑组件类(Service层),其功能与@Component相同。  @Controller  该注解用于标注一个控制器组件类(Spring MVC的Controller),其功能与@Component相同。  @Autowired  该注解可以对类成员变量、方法及构造方法进行标注,完成自动装配的工作。通过使用@Autowired来消除setter和getter方法。默认按照Bean的类型进行装配。  @Resource  该注解与@Autowired的功能一样,区别在于该注解默认是按照名称来装配注入的,只有当找不到与名称匹配的Bean时才会按照类型来装配注入;而@Autowired默认按照Bean的类型进行装配,如果想按照名称来装配注入,则需要和@Qualifier注解一起使用。  @Resource注解有两个属性——name和type。name属性指定Bean实例名称,即按照名称来装配注入;type属性指定Bean类型,即按照Bean的类型进行装配。  @Qualifier  该注解与@Autowired注解配合使用。当@Autowired注解需要按照名称来装配注入时需要和该注解一起使用,Bean的实例名称由@Qualifier注解的参数指定。  在上面几个注解中,虽然@Repository、@Service和@Controller等注解的功能与@Component注解相同,但为了使类的标注更加清晰(层次化),在实际开发中推荐使用@Repository标注数据访问层(DAO层)、使用@Service标注业务逻辑层(Service层)、使用@Controller标注控制器层(控制层)。  下面通过一个实例讲解如何使用这些注解。  1)创建DAO层  在ch3应用的src中创建annotation.dao包,在该包下创建TestDao接口和TestDaoImpl实现类,并将实现类TestDaoImpl使用@Repository注解标注为数据访问层。  TestDao的代码如下:       package annotation.dao;     public interface TestDao {         public void save();     }    TestDaoImpl的代码如下:       package annotation.dao;     import org.springframework.stereotype.Repository;     @Repository(“testDao”)     /**相当于@Repository,但如果在service层中使用@Resource(name=”testDao”), testDao不能省略**/     public class TestDaoImpl implements TestDao{         @Override         public void save() {             System.out.println(“testDao save”);         }     }    2)创建Service层  在ch3应用的src中创建annotation.service包,在该包下创建TestService接口和TestSeviceImpl实现类,并将实现类TestSeviceImpl使用@Service注解标注为业务逻辑层。  TestService的代码如下:       package annotation.service;     public interface TestService {         public void save();     }    TestSeviceImpl的代码如下:       package annotation.service;     import javax.annotation.Resource;     import org.springframework.stereotype.Service;     import annotation.dao.TestDao;     @Service(“testService”)  //相当于@Service     public class TestSeviceImpl implements TestService{         @Resource(name=”testDao”)         /**相当于@Autowired,@Autowired默认按照Bean类型装配**/         private TestDao testDao;         @Override         public void save() {             testDao.save();             System.out.println(“testService save”);         }     }    3)创建Controller层  在ch3应用的src中创建annotation.controller包,在该包下创建TestController类,并将TestController类使用@Controller注解标注为控制器层。  TestController的代码如下:       package annotation.controller;     import org.springframework.beans.factory.annotation.Autowired;     import org.springframework.stereotype.Controller;     import annotation.service.TestService;     @Controller     public class TestController {         @Autowired         private TestService testService;         public void save() {             testService.save();             System.out.println(“testController save”);         }     }    4)配置注解  由于annotation.dao、annotation.service和annotation.controller包都属于annotation包的子包,因此不需要在配置文件annotationContext.xml中配置注解。  5)创建测试类  在ch3应用的test包中创建测试类TestMoreAnnotation,具体代码如下:       package test;     import org.springframework.context.ApplicationContext;     import org.springframework.context.support.ClassPathXmlApplicationContext;     import annotation.controller.TestController;     public class TestMoreAnnotation {         public static void main(String[] args) {             ApplicationContext appCon = new ClassPathXmlApplicationContext       (“annotationContext.xml”);             TestController testcon = (TestController)appCon.getBean(“testController”);             testcon.save();         }     }3.6  本章小结  本章重点介绍了如何将Bean装配注入到Spring IoC容器中,即Bean的装配方式。通过本章的学习,读者能够掌握Bean的两种常用装配方式,即基于XML配置的装配和基于注解的装配,其中基于注解的装配方式尤其重要,它是当前的主流装配方式。习题3  1.Bean的实例化有哪几种常见的方法?  2.简述基于注解的装配方式的基本用法。  3.@Autowired和@Resource有什么区别?  4.Bean的默认作用域是(    )。       A.page B.request       C.singleton D.prototype  5.在下面代码片段中使用@Controller 注解装配了Bean,而Bean的id是(    )。       @Controller     public class TestController {         …     }         A.TestController B.testController C.无id     D.任意名称

书摘插画
插图

插图

插图

插图

插图

插图

抢先评论了 “Java EE框架整合开发入门到实战——Spring+Spring MVC+MyBatis(微课版)” 取消回复

评论

还没有评论。

相关产品

阅读更多
缺货

深度学习入门 基于Python的理论与实现

EUR €35.99
评分 5.00 / 5
加入购物车

21世纪C语言(影印版)

EUR €37.99
加入购物车

R 语言技术手册 2E(影印版)

EUR €42.99
阅读更多
缺货

C++ Primer Plus(第6版)中文版(畅销30年C++必读经典教程全新升级,蔡学镛、孟岩、高博倾力推荐)

EUR €43.99
评分 5.00 / 5

东东购的宗旨是服务喜爱阅读中文书籍的海外人民,提供一个完善的购书平台,让国人不论何时何地都能沉浸在书香之中,读着熟悉的中文字,回忆着家乡的味道。


安全加密结账 安心网络购物 支持Paypal付款

常见问题

  • 货物配送
  • 退换货政策
  • 隐私政策
  • 联盟营销

客户服务

  • 联系东东
  • 关于东东
  • 帮我找书
  • 货物追踪
  • 会员登入

订阅最新的优惠讯息和书籍资讯

选择币别

EUR
USD
CAD
AUD
NZD
NOK
GBP
CHF
SEK
CNY
UAH
ILS
SAR
MXN
KRW
MYR
SGD
HUF
TRY
JPY
HKD
TWD
facebookinstagram
©2020 东东购 EasternEast.com

限时特卖:用“SALE15”优惠券全场书籍85折!可与三本88折,六本78折的优惠叠加计算。 忽略