摘要:有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如最常见到的多对一,一对多等。这些查询是如何处理的呢,这一讲就讲这个问题。我们首先创建一个Article 这个表,并初始化数据. 程序代码Drop TABLE IF EXISTS `article`;Create TABLE `article` ( `id` int(11) NOT NULL auto_inc...
阅读全文
12 2016 档案
摘要:前面已经讲到用接口的方式编程。这种方式,要注意的一个地方就是。在User.xml 的配置文件中,mapper namespace="com.yihaomen.mybatis.inter.IUserOperation" ,命名空间非常重要,不能有错,必须与我们定义的package 和 接口一致。如果不一致就会出错,这一章主要在上一讲基于接口编程的基础上完成如下事情:1. 用 mybatis 查询数...
阅读全文
摘要:前面一章,已经搭建好了eclipse,mybatis,mysql的环境,并且实现了一个简单的查询。请注意,这种方式是用SqlSession实例来直接执行已映射的SQL语句:session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID", 1)其实还有更简单的方法,而且是更好的方法,使用合理描述参数和SQL语句返回值...
阅读全文
摘要:mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。首先建立一个名字为 MyBaits 的 dynamic web project 1. 现阶段,你可以直接建立java 工程,但一般都是开发web项目,这个系列教程最后也是web的,所以一开始就建立web工程。2...
阅读全文
摘要:四、MyBatis主配置文件 在定义sqlSessionFactory时需要指定MyBatis主配置文件: Xml代码 MyBatis配置文件中大标签configuration下子标签包括:configuration|--- properties|--- settings|--- typeAliases|--- typeHandlers|--- object...
阅读全文
摘要:三、动态SQL语句 有些时候,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询出的结果很可能是空的,也许我们需要参数为空时,是查出全部的信息。使用Oracle的序列、mysql的函数生成Id。这时我们可以使用动态sql。 下文均采用mysql语法和函数(例如字符串链接函数CONCAT)。 3.1 selectKey 标签 ...
阅读全文
摘要:二、SQL语句映射文件(2)增删改查、参数、缓存 2.2 select一个select 元素非常简单。例如:Xml代码 这条语句就叫做‘getStudent,有一个String参数,并返回一个StudentEntity类型的对象。注意参数的标识是:#{studentID}。 select 语句属性配置细节: 属性描述取值默认id在这个模式下唯一的标识符,可被其它语句引用paramet...
阅读全文
摘要:二、SQL语句映射文件(1)resultMapSQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: Xml代码 当Java接口与XML文件在一个相对路径下时,可以不在myBatis配置文件的m...
阅读全文
摘要:一、MyBatis简介与配置MyBatis+Spring+MySql 1.1MyBatis简介 MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等...
阅读全文
摘要:一、搭建开发环境 1.1、使用Maven创建Web项目 执行如下命令: mvn archetype:create -DgroupId=me.gacl -DartifactId=spring4-mybatis3 -DarchetypeArtifactId=maven-archetype-webapp
阅读全文
摘要:一、MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 1.1、Mybatis一级缓存测试 1.2、Mybatis二级缓存测试 1、开启二级缓存,在userMapper.xml文件中添加如下配置 2、测试二级缓存 1.3、二级缓存补充说明 1. 映射
阅读全文
摘要:一、提出需求 查询得到男性或女性的数量, 如果传入的是0就女性否则是男性 二、准备数据库表和存储过程 三、编辑userMapper.xml 编辑userMapper.xml文件,添加如下的配置项 四、编写单元测试代码 来源:http://www.cnblogs.com/xdp-gacl/p/4270
阅读全文
摘要:一、一对一关联 1.1、提出需求 根据班级id查询班级信息(带老师的信息) 1.2、创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系。 表之间的关系如下: 1.3、定义实体类 1、Teacher类,Teacher类是teacher
阅读全文
摘要:在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突。 一、准备演示需要使用的表和数据 二、定义实体类 三、编写测试代码 3.1、编写SQL的xml映射文件 1、创建一个orderMapper.xml文件,o
阅读全文
摘要:一、连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 其实我们完全可以将数据库的连接配置信息写在一个properties文件中,然后在conf.xml文件中引用properties文件,具体做法如下:
阅读全文
摘要:上一篇博文MyBatis入门学习教程-MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对users表执行CRUD操作。本文中使用到的测试环境是上一篇博文中的测试环境。 一、使用MyBatis对表
阅读全文
摘要:一、Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java
阅读全文
摘要:Apache Shiro 是ASF旗下的一款开源软件(Shiro发音为“shee-roh”,日语“堡垒(Castle)”的意思),提供了一个强大而灵活的安全框架。可为任何应用提供安全保障— 从命令行应用、移动应用到大型网络及企业应用。Apache Shiro提供了认证、授权、加密和会话管理功能,将复杂的问题隐藏起来,提供清晰直观的API使开发者可以很轻松地开发自己的程序安全代码。并且在实现此目标时...
阅读全文
摘要:Shiro 是 Java 世界中新近出现的权限框架,较之 JAAS 和 Spring Security,Shiro 在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势。本文介绍了 Shiro 的关键概念和权限模型,同时给出了 Shiro 以及 Grails Shiro Plugin 的使用示例。在阅读本文的过程中,读者可以充分的体会到 Shiro 的魅力。前言Shiro 是 JAVA 世界中...
阅读全文
摘要:Apache Shiro 是功能强大并且容易集成的开源权限框架,它能够完成认证、授权、加密、会话管理等功能。认证和授权为权限控制的核心,简单来说,“认证”就是证明你是谁? Web 应用程序一般做法通过表单提交用户名及密码达到认证目的。“授权”即是否允许已认证用户访问受保护资源。关于 Shiro 的一系列特征及优点,很多文章已有列举,这里不再逐一赘述,本文重点介绍 Shiro 在 Web Appli...
阅读全文
摘要:注:这里只介绍Spring配置模式。因为官方例子虽然中有更加简洁的ini配置形式,但是使用ini配置无法与spring整合。而且两种配置方法一样,只是格式不一样。涉及的jar包核心包shiro-core1.2.0Web相关包shiro-web1.2.0缓存包shiro-ehcache1.2.0与spring整合包shiro-spring1.2.0Ehcache缓存核心包ehcache-core2....
阅读全文
摘要:声明本文只适合初学者,本人也是刚接触而已,经过一段时间的研究小有收获,特来分享下希望和大家互相交流学习。首先配置我们的web.xml代码如下: shiroFilter org.springframework.web.filter.DelegatingFilterProxy shiroFilter /* @...
阅读全文
摘要:当报这个错时,就很难看到我们自己输出的日志,系统运行情况后台无法得到输出。解决方案是加入以下依赖:Xml代码 org.slf4j slf4j-log4j12 1.7.5 provided log4j log4j 1.2.14 provided ...
阅读全文
摘要:当Shiro集成到Spring mvc中,却发现shiro的权限注解不起作用,官方的配置是要支持注解,只需要将以下代码加到spring 配置文件中即可: 后来研究发现,不起作用是因为代码放的位置不对,需要将上面代码放到视图的配置文件中,如:spring-mvc.xml文/Devid(简书作者)原文链接:http://www.jianshu.com/p/3716ee8e3adc来自为知...
阅读全文
摘要:在使用Shiro标签库前,首先需要在JSP引入shiro标签: 1、介绍Shiro的标签guest标签 :验证当前用户是否为“访客”,即未认证(包含未记住)的用户。 Hi there! Please Login or Signup today! 2、user标签 :认证通过或已记住的用户。 Welcome back John! Not John? Click here to login. ...
阅读全文
摘要:shiro验证权限方式一种是基于url配置文件:例如: /home=authc /resources/**=ano...
阅读全文
摘要:Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。 因为我总结的是使用SpringMVC和Apache Shiro整合,注重的是整合和使用,至于基础...
阅读全文
摘要:摘要: SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。第一步:配置web.xml --> shiroFilter org.springframework.web.filter.DelegatingFilterProxy targetFilterLifecyc...
阅读全文
摘要:在尝试保护你的应用时,你是否有过挫败感?是否觉得现有的Java安全解决方案难以使用,只会让你更糊涂?本文介绍的Apache Shiro,是一个不同寻常的Java安全框架,为保护应用提供了简单而强大的方法。本文还解释了Apache Shiro的项目目标、架构理念以及如何使用Shiro为应用安全保驾护航。什么是Apache Shiro?Apache Shiro(发音为“shee-roh”,日语“堡垒(...
阅读全文
摘要:一、在web.xml中添加shiro过滤器 Xml代码 shiroFilter org.springframework.web.filter.DelegatingFilterProxy shiroFilter /* 二、在Spring的applicationContext.xml中添加shiro配置 1、...
阅读全文
摘要:Apache Shiro的配置主要分为四部分: 对象和属性的定义与配置URL的过滤器配置静态用户配置静态角色配置其中,由于用户、角色一般由后台进行操作的动态数据,因此Shiro配置一般仅包含前两项的配置。 Apache Shiro的大多数组件是基于POJO的,因此我们可以使用POJO兼容的任何配置机制进行配置,例如:Java代码、Sping XML、YAML、JSON、ini文件等等。下面,以Sp...
阅读全文
摘要:在认证、授权内部实现机制中都有提到,最终处理都将交给Real进行处理。因为在Shiro中,最终是通过Realm来获取应用程序中的用户、角色及权限信息的。通常情况下,在Realm中会直接从我们的数据源中获取Shiro需要的验证信息。可以说,Realm是专用于安全框架的DAO。 一、认证实现 正如前文所提到的,Shiro的认证过程最终会交由Realm执行,这时会调用Realm的getAuthentic...
阅读全文
摘要:授权即访问控制,它将判断用户在应用程序中对资源是否拥有相应的访问权限。 如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限,以及是否拥有打印的权限等等。 一、授权的三要素 授权有着三个核心元素:权限、角色和用户。 权限 权限是Apache Shiro安全机制最核心的元素。它在应用程序中明确声明了被允许的行为和表现。一个格式良好的权限声明可以清晰表达出用户对该资源拥有的权限。 大多...
阅读全文
摘要:认证就是验证用户身份的过程。在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法。最常见的“实体/凭证”组合便是“用户名/密码”组合。 一、Shiro认证过程 1、收集实体/凭据信息 Java代码 //Example using most common scenario of username/password pair: Usern...
阅读全文
摘要:一、什么是Shiro Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能: 认证 - 用户身份识别,常被称为用户“登录”;授权 - 访问控制;密码加密 - 保护或隐藏数据防止被偷窥;会话管理 - 每用户相关的时间敏感的状态。对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro要简单的多。 二、Shiro的架构...
阅读全文
摘要:IntelliJ IDEA默认文件是自动保存的,但是手头有个项目jsp文件改动后,在tomcat中不能立即响应变化。想要jsp文件改动后立刻看到变化,可以通过修改配置来实现。 在IDEA tomcat 中server的配置里,有个On frame deactivation,选择Update classes and resources。另外有个配置on update actio...
阅读全文
摘要:初衷记得以前写接口,写完后会整理一份API接口文档,而文档的格式如果没有具体要求的话,最终展示的文档则完全决定于开发者的心情。也许多点,也许少点。甚至,接口总是需要适应新需求的,修改了,增加了,这份文档维护起来就很困难了。于是发现了swagger,自动生成文档的工具。swagger介绍首先,官网这样写的:Swagger – The World's Most Popular Framework fo...
阅读全文
摘要:Java Code Examples for springfox.documentation.spi.DocumentationTypeThe following are top voted examples for showing how to use springfox.documentation.spi.DocumentationType. These examples are extrac...
阅读全文
摘要:Java Code Examples for springfox.documentation.service.ApiInfoThe following are top voted examples for showing how to use springfox.documentation.service.ApiInfo. These examples are extracted from ope...
阅读全文
摘要:1、需求背景SpringMVC本身就可以开发出基于rest风格的服务,通过简单的配置,即可快速开发出一个可供客户端调用的rest服务,通常这些服务要不就是用于手机app的开发,要不就是提供给第三方开发者使用,不管哪种情况,你都需要提供详细的说明给别人,而Swagger就是为这种情况而生的,通过在接口上的注解,生成可供第三方模拟测试和阅读的接口列表,既美观又使用,真是行走江湖之必备良药。 下面先上美...
阅读全文
摘要:本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring Boot中,并与Spring MVC程序配合组织出强大RESTful API文档。它既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合为一体,可以让我们在修改代码逻辑的同时方便的修改文档说明。另外Swagger2也提供了强大的页面测试功能来调试每个RESTful AP...
阅读全文
摘要:Swagger使用总结1. Swagger是什么?官方说法:Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。个人觉得,swagger的一个最大的优点是能实时同步api与文档。在项目开发过程中,发生过多次:修改代...
阅读全文
摘要:1.Spring MVC配置文件中的配置[java] view plain copy [java] view plain copy [html] view plain copy print? 2.maven依赖[html] view plain copy io.springfox ...
阅读全文
摘要:简介Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。这一次我将从零开始搭建一个工程来演示如何在Spring mvc中整合Swagger生成Rest...
阅读全文
摘要:如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建议先看一下相关的内容。@Controller:修饰class,用来创建处理http请求的对象@RestController:Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseB...
阅读全文
摘要:由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端。这样一来,我们的RESTful API就有可能要面对多个开发人员或多个开发团队:IOS开发、Android开...
阅读全文
摘要:这篇文章的主要目的是将我觉得非常有用的东西给记录下来,一方面是对自己感受的一个整理,一方面也给其他喜欢文字而不喜欢视频的同学一个参考(推荐大家看 ATIT 的视频,Hadi 都是现场直接演示功能)。注意:这篇文章是基于我目前使用的 Intellij IDEA 版本,2016.3 Ultimate 来写的,快捷键是 Mac OS 10.5+。如果同学们使用其他的版本或者快捷键,请大家注意自行脑补映射...
阅读全文
摘要:1. Controller, RestController的共同点 都是用来表示Spring某个类的是否可以接收HTTP请求2. Controller, RestController的不同点 @Controller标识一个Spring类是Spring MVC controller处理器 @RestController: @RestController是@Controll...
阅读全文
摘要:1、spring的default-lazy-init参数 spring在启动的时候,会默认加载会默认加载整个对象实例图,从初始化ACTION配置、到 service配置到dao配置、乃至到数据库连接、事务等等。这样可以减少web服务器在运行时的负担,但是对于开发者来说无疑是效率极低的一个设置了。 spring提供了default-lazy-init属性,其配置形式如下,applicationCo...
阅读全文
摘要:SpringMvc处理JSON步骤如下: 1.加入jar包 2.编写目标方法,使其返回JSON对应的对象或集合 3.在方法上添加@ResponseBody注解DispatcheServlet默认装配RequestMappingHandlerAdapter,而RequestMappingHandlerAdapter默认装配以下的HttpMessageConverter:加入Jackson...
阅读全文
摘要:首先,所建立的程序是一个web程序,所以在web.xml文件中进行如下的配置:123456789101112131415161718192021222324252627282930313233343536 Archetype Created Web Application contextConfigLocation classpath:applica...
阅读全文
摘要:若将DispatcheServlet请求映射设置为/,则SpringMvc将捕获WEB容器的所有请求,包括静态资源的请求,SpringMvc会将它们当成一个普通的请求处理,那么将会出现因找不到对应的处理器将导致错误。可在SpringMvc的配置中配置的方式解决静态资源的问题: -将在SpringMvc上下文中定义一个DefaultServletHttpRequestHandl...
阅读全文
摘要:与之间的一个问题在做项目的时候,我希望静态资源由WEB服务器默认的Servlet来处理,所以我在配置文件中添加了如下的语句: 但是我再次运行项目,并访问资源的时候,发现访问@RequestMapping("/path1/path2")都不能访问了,之前没有添加的时候是能够访问的。解决方案是,在配置文件中再添加一句代码: 这样做的原因是: 当两种标签都没...
阅读全文
摘要:AOP技术即(面向切面编程)技术是在面向对象编程基础上的发展,AOP技术是对所有对象或一类对象编程。核心是在不增加代码的基础上,还增加了新的功能。AOP编程在开发框架本身用的比较多,而实际项目中,用的比较少。它是将分散在各个业务逻辑代码中的相同代码抽取出来形成一个独立的模块。1、定义AOP术语(1)切面(aspect):要实现的交叉功能,是系统模块化的一个切面或领域。(2)通知(advice):切...
阅读全文
摘要:1、在注解注入方式中,首先要在xml中引入如下的红线的命名空间:Xml代码 同时要引入apache开源组织的common-annotation.jar (JSR-250中的注解)。2、在注解中应用到的注解:@AutoWired和@Resource(1)@AutoWired和@Resource的区别@AutoWired默认按类型进行装配。@Resource默认情况下按名称进行...
阅读全文
摘要:5、spring依赖注入的方式方法一:使用构造器方式进行注入1、dao的类和接口Java代码 package com.cvicse.dao.impl; import com.cvicse.dao.PersonDao; public class PersonDaoBean implements PersonDao { public void add(){ S...
阅读全文
摘要:一直以来忙于项目的开发,Spring虽然不用,一直想系统地学习一下,想看看它的源码,都没有时间,这段时间比较充裕,就索性先把Spring学习下,熟悉各个功能再去探究它内部的实现。就从Ioc篇开始学习。1、实例化spring容器的两种方法 方法一:在类路径下寻找配置文件来实现Spring容器的实例化Java代码 ApplicationContext cx= new ClassP...
阅读全文
摘要:今天研究了一下scope的作用域。默认是单例模式,即scope="singleton"。另外scope还有prototype、request、session、global session作用域。scope="prototype"多例。再配置bean的作用域时,它的头文件形式如下: 如何使用sprin
阅读全文
摘要:Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。 @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。@Resource有两个属性是比较重要的,分是name和...
阅读全文
摘要:Spring MVC项目搭建添加依赖(省略)Spring MVC配置类@Configuration @EnableWebMvc @ComponentScan("com.sjx.springmvc") public class MyMvcConfig extends WebMvcConfigurerAdapter{ @Bean public InternalResourceViewR...
阅读全文
摘要:1、JUnit4JUnit测试用例的完整生命周期要经历一下阶段:类级初始化资源处理,方法级初始化资源处理、执行测试用例中的方法、方法级销毁资源处理、类级销毁资源处理。测试方法 @Test初始化 @BeforeClass、@AfterClass和@Before、@After异常测试 @Test(expected=NullPointerException.class)超时测试 @Test(timeou...
阅读全文
摘要:Spring MVC1、Spring MVC概述Spring MVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet负责截获请求并将其分配给响应的处理器处理。Spring MVC框架包括注解驱动控制器、请求及响应的信息处理、视图解析、本地化解析、上传文件解析、异常处理以及表单标签绑定等内容。2、注解驱动的控制器2.1、使用@RequestMapping映射...
阅读全文
摘要:1、Spring 对 DAO的支持Spring支持目前大多数常用的数据持久化技术,Spring定义了一套面向DAO层的异常体系,并未各种支持的持久化技术提供了异常转换器。这样,我们在设计DAO接口时,就可以抛开具体的实现技术,定义统一的接口。不管采用 何种持久化技术,访问数据的流程是相对固定的。Spring将数据访问流程划分为固定和变化两个部分,并以模板的方式定好流程,用回调接口将变化的部分开放出...
阅读全文
摘要:AOP概述AOP是OOP的有益补充,他为程序开发提供了一个崭新的思考角度,可以将重复性的横切逻辑抽取到统一的模块中,通过OOP的纵向抽象和AOP的横向抽取,程序才能真正解决复杂性代码问题。Spring采用JDK动态代理和CGLib动态代理的技术在运行期间植入增强,所以我们不需要装备特殊的编译器或者类装载器就可以使用AOP的功能。要使用JDK动态代理,目标类必须实现接口,而CGLib不对目标类做任何...
阅读全文
摘要:IOC概述Spring中IOC的概念,控制反转概念其实包含两个层面的意思,“控制”是接口实现类的选择控制权;而“反转”是指这种选择控制权从调用者转移到外部第三方或容器的手中。BeanFactory、ApplicationContext和WebApplicationContext是Spring框架三个最核心的接口,框架中其他大部分的类都围绕他们展开、为他们提供支持和服务。在这些支持类中,Respur...
阅读全文
摘要:1. 简介spring framework 为任务的异步执行和调度提供了抽象接口分别是:TaskExecutor 和 TaskScheduler,spring 对这些接口的进一步实现支持线程池或者将该功能交给应用服务器的commonJ。最后,在java5、java6和java EE环境下这些公共接口的实现的使用方法是不同的。spring为了支持任务的调度,利用Timer(始于jdk1.3)和Qua...
阅读全文
摘要:一.环境搭建创建Maven项目一般pom.xml会出错,本地若无相应版本的jar包,则无法下载或下载速度非常慢,我的解决方案是,查找本地仓库的jar,修改为本地仓库有的jar即可pom.xml的依赖jar可以从Maven搜索二.Spring的 IOC(控制反转)与DI(依赖注入)IOC(把Bean 的创建与管理交给Spring容器)使用@Component,@Service,@Controller...
阅读全文
摘要:主要内容定义Spring的数据访问支持配置数据库资源使用Spring提供的JDBC模板写在前面:经过上一篇文章的学习,我们掌握了如何写web应用的控制器层,不过由于只定义了SpitterRepository和SpittleRepository接口,在本地启动该web服务的时候会遇到控制器无法注入对应的bean的错误,因此我决定跳过6~9章,先搞定数据库访问者一章。在企业级应用开发中不可避免得会涉及...
阅读全文
摘要:主要内容将web请求映射到Spring控制器绑定form参数验证表单提交的参数对于很多Java程序员来说,他们的主要工作就是开发Web应用,如果你也在做这样的工作,那么你一定会了解到构建这类系统所面临的挑战,例如状态管理、工作流和参数验证等。HTTP协议的无状态性使得这些任务极具挑战性。Spring的web框架用于解决上述提到的问题,基于Model-View-Controller(MVC)模型,S...
阅读全文
摘要:主要内容面向切面编程的基本知识为POJO创建切面使用@AspectJ注解为AspectJ的aspects注入依赖关系在南方没有暖气的冬天,太冷了,非常想念北方有暖气的冬天。为了取暖,很多朋友通过空调取暖,但是空调需要耗电,也就需要交不少电费。没家都会有一个电表,每隔一段时间都会有记录员来家里收取这段时间的电费。现在做个假设:去掉电表和电费收取员,因此也没有人定期来家里收电费。这时就需要我们隔段时间...
阅读全文
摘要:主要内容:Environments and profilesConditional bean declaration处理自动装配的歧义bean的作用域The Spring Expression Language在装配bean—依赖注入的本质一文中,我们探讨了Spring的三种管理bean的方式:自动装配、基于JavaConfig、基于XML文件。这篇文字将探讨一些Spring中关于bean的管理的...
阅读全文
摘要:主要内容Spring的配置方法概览自动装配bean基于Java配置文件装配bean控制bean的创建和销毁任何一个成功的应用都是由多个为了实现某个业务目标而相互协作的组件构成的,这些组件必须相互了解、能够相互协作完成工作。例如,在一个在线购物系统中,订单管理组件需要与产品管理组件以及信用卡认证组件协作;这些组件还需要跟数据库组件协作从而进行数据库读写操作。在Spring应用中,对象无需自己负责查找...
阅读全文
摘要:主要内容Spring的使命——简化Java开发Spring容器Spring的整体架构Spring的新发展现在的Java程序员赶上了好时候。在将近20年的历史中,Java的发展历经沉浮。尽管有很多为人诟病的产品,例如applets、EJB、Java Data Object(JDO)和数不清的日志框架,Java还是发展为一个庞大且丰富的开发平台,很多企业级应用都是基于JVM平台构建。Spring是JV...
阅读全文
摘要:目前有很多组织使用了一些工具依赖于Maven仓库,但他们并没有采用一个仓库管理器,对于这一点我十分惊讶。可能没人提出来这一点,没人站出来告诉别人使用一个仓库管理器能带来什么好处。我经常能从很多不使用Maven仓库管理器的组织那里听到这样的字眼:“我们不需要那么复杂……”,或者“中央仓库够了,我们不需要在本地建立这样一个仓库” 不用说,关于什么“是”一个好的Maven仓库,还存在很多误解。首先,...
阅读全文
摘要:首先简单介绍下 Maven 的 profile 是什么。对于人来说,profile 是指人的肖像,轮廓,比如论坛里每个人注册了帐号后,可以设置自己的 profile,放上照片,介绍等等。对于 Maven 来说又是怎样呢?整个项目定义好了项目对象模型(POM),就像论坛为每个人提供了默认的行为功能,如果我想改变我机器上的 POM 呢?这时就可以使用 profile。下面举个例子:Xml代码 ...
阅读全文
摘要:在我们平常的java开发中,会经常使用到很多配制文件(xxx.properties,xxx.xml),而当我们在本地开发(dev),测试环境测试(test),线上生产使用(product)时,需要不停的去修改这些配制文件,次数一多,相当麻烦。现在,利用maven的filter和profile功能,我们可实现在编译阶段简单的指定一个参数就能切换配制,提高效率,还不容易出错,详解如下。一,原理:利用f...
阅读全文
摘要:profiles定义如下 local local dev dev beta ...
阅读全文
摘要:在开发过程中,我们的软件会面对不同的运行环境,比如开发环境、测试环境、生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件,这样来回修改,是个很麻烦的事情。有没有一种方法能够让我们不用修改配置就能发布到不同的环境中呢?当然有,这就是接下来要做的事。当然,这里的前提是使...
阅读全文
摘要:项目组大部分人员不能访问maven的central repository,因此在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上 环境是:nexus-2.1.1、maven-3.0.4、jdk-1.6.0_32 一、用admin用户登陆nexus nexus的下载和安装都很简单Java代码 1.下载 http://www.sonatype.org/nexu...
阅读全文
摘要:如果有耐心的话,完全可以通过在线更新索引的方式来做,但所消耗的时间较长,下面介绍一种简单、可行的方式来手动更新索引文件。访问http://repo.maven.apache.org/maven2/.index/下载中心仓库最新版本的索引文件,在一长串列表中,我们需要下载如下两个文件(一般在列表的末尾位置)nexus-maven-repository-index.gznexus-maven-repo...
阅读全文
摘要:前边简单介绍了Maven,而Maven默认提供的中央仓库是在远程网络服务Appache提供的,这对于我们开发时不合理的。如果我们没网了或者什么情况,我们怎么办?也就是说我们队中央仓库的依赖性太大。而Nexus私服则可以解决我们这个问题。先看下这张图应该大家就非才明白了: 这样就相当于在我们本地的局域网搭建了一个类似中央仓库的服务器,我们开始将中央仓库的一些资料下载到私服务器上,然后平...
阅读全文
摘要:1 概念介绍 一个项目所有的配置都放置在 POM 文件中:定义项目的类型、名字,管理依赖关系,定制插件的行为等等。比如说,你可以配置 compiler 插件让它使用 java1.5 来编译。[html] view plain copy print? 4.0.0 com.mycompany.helloworld helloworld 1.0-SN...
阅读全文
摘要:1 概念介绍 之前我们说过,maven 坐标能够确定一个项目。换句话说,我们可以用它来解决依赖关系。在 POM 中,依赖关系是在 dependencies部分中定义的。在上面的 POM 例子中,我们用 dependencies 定义了对于 junit 的依赖:[html] view plain copy print? junit junit...
阅读全文
摘要:1. 环境搭建 1.1 下载 http://www.sonatype.org/nexus/ NEXUS OSS [OSS = Open Source Software,开源软件——免费] NEXUS PROFESSIONAL -FREE TRIAL [专业版本——收费]。 所以选择NEXUS OSS 找到Download andInstall Nex...
阅读全文
摘要:POM (Project Object Model)一个项目所有的配置都放置在 POM 文件中:定义项目的类型、名字,管理依赖关系,定制插件的行为等等。比如说,你可以配置 compiler 插件让它使用 java 1.5 来编译。 示例的 POM: 4.0.0 com.mycompany.helloworld helloworld 1.0-SNAPSHO...
阅读全文
摘要:本地仓库是远程仓库的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。如果你所需要的jar包版本在本地仓库没有,而且也不存在于远程仓库,Maven在构建的时候会报错,这种情况可能是有些jar包的新版本没有在Maven仓库中及时更新。默认仓库的存储位置Maven缺省的本地仓库路径为...
阅读全文
摘要:Maven的生命周期是为了对所有的构建过程进行了抽象了,便于统一。clean(清理)cleanup(清理所有)此生命周期旨在给工程做清理工作,它主要包含以下阶段:pre-clean - 执行项目清理前所需要的工作。clean - 清理上一次build项目生成的文件。post-clean - 执行完成项目清理所需的工作.default(默认)validate - 验证项目是否正确且所有必要的信息都可...
阅读全文
摘要:修改maven根目录下的conf文件夹中的setting.xml文件,如果你修改了默认仓库的存储位置,即.m2文件夹下没有本地仓库,但是有个setting.xml文件,那就修改这个文件就可以。具体内容和示意图如下: alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ centralMaven ...
阅读全文
摘要:Maven 和 Ant 有什么不同呢?在回答这个问题以前,首先要强调一点:Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和 Ant代表两个差异很大的工具,所以接下来只说明这两个工具的等同组件之间的区别,如下表所示: MavenAnt标准构...
阅读全文
摘要:Maven是什么? Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。 Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。 在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,...
阅读全文
摘要:Maven库:http://repo2.maven.org/maven2/Maven依赖查询:http://mvnrepository.com/http://search.maven.orgMaven常用命令: 1. 创建Maven的普通java项目: mvn archetype:create -DgroupId=packageName -DartifactId=projectName 2. 创建...
阅读全文
摘要:什么是构建工具?构建工具是将软件项目构建相关的过程自动化的工具。构建一个软件项目通常包含以下一个或多个过程:生成源码(如果项目使用自动生成源码)从源码生成项目文档编译源码将编译后的代码打包成JAR文件或者ZIP文件将打包好的代码安装到服务器、仓库或者其它的地方有些项目可能需要更多的过程才能完成构建,这些过程一般也可以整合到构建工具中,因此它们也可以实现自动化。自动化构建过程的好处是将手动构建过程中...
阅读全文
摘要:接上回继续,项目开发好以后,通常要在多个环境部署,象我们公司多达5种环境:本机环境(local)、(开发小组内自测的)开发环境(dev)、(提供给测试团队的)测试环境(test)、预发布环境(pre)、正式生产环境(prod),每种环境都有各自的配置参数,比如:数据库连接、远程调用的ws地址等等。如
阅读全文
摘要:接上回继续,相信大家对maven每次都联网从国外站点下载依赖项的龟速网络已经不坎忍受了,今天先来看看如何搭建"仓库私服",目前nexus是使用比较广泛的私服软件之一,下面将介绍基本用法: 一、到nexus官网下载最新版1.1 下载地址:http://www.sonatype.org/downloads/nexus-latest-bundle.zip (目前最新版本是2.7.2-03)(2015-0...
阅读全文
摘要:一、下载及安装1.1 下载maven 3.1.1先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.1.1 ),下载完成后,解压到某个目录(本文中是C:\Java\maven-3.1.1) 2.1 配置环境变量系统环境变量里,添加MAVEN_HOME(或M2_HOME),其值为C:\Java\maven-3.1.1,然后PATH环境变量最后附加...
阅读全文