Spring系列
文章平均质量分 50
feigeswjtu
这个作者很懒,什么都没留下…
展开
-
Bean的初始化和销毁
在我们实际开发中经常遇到需要在Bean初始化之后或者销毁之前做些必要的工作,比如格式化数据等等,Bean的生产和使用都是由Spring控制的,那么怎么做才能再bean被初始化之后或者销毁之前做一些操作呢。 目前有两种方式: 1. Java代码配置形式: 使用@Bean的属性initMethod(相当于xml配置的init-method)和destroyMethod(相当于xml配置的destro原创 2017-07-11 18:44:12 · 257 阅读 · 0 评论 -
spring之AOP初探
去面试Java绝对少不了的就是AOP(切面编程),我也纳闷,AOP就这么重要么,后来看了Spring实战之后发现,AOP就是Spring的很多特性的基础,日志记录,性能统计,安全控制,事务处理,异常处理等等。 这篇文章,我们简单的写一个demo体会一下AOP,后面我们再详细介绍。 还记得上一篇 讲了一个人类打电话的例子,既然是打电话,打之前少不了拨号的操作,打完之后少不了挂电话的操作。那我们就原创 2018-01-01 20:08:41 · 190 阅读 · 0 评论 -
Spring Boot上传文件
Spring Boot上传文件只需要在controller的方法上设置一个MultipartFile 参数即可,当然可以用@RequestParam指定方法名,如果是上传多个file时,可以使用数组,另外也可以用一个成员变量为MultipartFile的类来接收文件和其他参数。 为了演示它,我们需要有页面来上传文件,引入thymeleaf模板引擎。 <dependency> <groupI原创 2017-12-26 20:33:30 · 282 阅读 · 0 评论 -
Spring高级装配之Profile
很多情况下,我们需要在不同的环境下装配不同的Bean,比如数据库,测试环境我们想用嵌入式数据库,开发环境我们想用mysql,线上环境我们想用oracle,总不能每次上线都要改代码吧。 Spring提供给了我们@Profile来根据我们的环境确定我们要装配哪儿种Bean。JavaConfig中使用Profile直接上代码:@Configurationpublic class原创 2018-01-11 19:37:31 · 262 阅读 · 0 评论 -
Spring装配Bean之自动化装配Bean
装配方式使用Spring就是要让Spring帮助我们管理这些Class的实例也就是这些Bean,但是作为开发人员,我们需要告诉Spring哪儿些bean需要装配和怎么装配到一起,Spring提供了三类装配机制:自动化发现和装配Bean。在Java代码中显示配置Bean。在XML里显示配置Bean。这些方式可以单独使用,也可以配合一起使用。 虽然Spring给了我们很多种方式,但是如果我们滥原创 2018-01-01 20:57:16 · 539 阅读 · 0 评论 -
Spring装配Bean之Java代码装配Bean
上一篇文章 我们介绍了怎么让Spring自动扫描并装配Bean,这一章,我们接着讲我们怎么显式的告诉Spring每个Bean该怎么装配,有两种方式,一种是基于Java代码的,一种是基于XML文件的。 由于基于Java代码的比较简单,也是仅次于自动装配我们推荐使用的,所以本章先讲解一下基于Java代码显式声明的。 pom.xml、Bean的class这里就不详细贴代码了,可以见上一章,只需要@Co原创 2018-01-02 20:59:11 · 354 阅读 · 0 评论 -
Spring高级装配之条件化装配
根据环境变量装配Bean 我们将了怎么使用@Profile来装配对应的Bean,现在有时候,我们需要更细的条件来判断是否要装配某个Bean,比如在应用的类路径下有特定的库,某个环境变量是我们要的值等等,该怎么做呢?@ConditionalSpring提供给了我们一个注解@Conditional来做到这个事情,我们举个例子,例子的逻辑是如果环境变量里有magic属性,我们才会创建Magi原创 2018-01-11 20:15:55 · 557 阅读 · 0 评论 -
Spring高级装配之指定Bean
在我们使用@Autowired时,如果我们注入的Bean只有一个,那么自动装配会找到我们定义的那个Bean装配进去,如果我们定义了多个时,通过@Autowired装配时就会抛出异常,举个例子: 我们根据接口注入了一个Bean:@Autowiredprivate Dessert dessert;而我们声明了多个Bean:@Componentpublic class Cookie原创 2018-01-11 20:42:41 · 1624 阅读 · 0 评论 -
Spring AOP 和 AspectJ 详解
最近在看《Spring 实战》,说真的第四章《面向切面编程的Spring》讲的真心很烂,看了几遍都不清楚到底要表达什么,也没有讲清楚Spring AOP 和 AspectJ的区别关系,终于让我找到了一篇文章关于 Spring AOP (AspectJ) 你该知晓的一切,写的是真好,这里记录一下。接下来举个我自己项目代码的例子。 我们知道,很多时候,要判断当前用户是否已经登录,也就是进行鉴权,原创 2018-01-14 20:16:05 · 1148 阅读 · 0 评论 -
Spring MVC的数据流图
Spring 大多数是用来搭建web程序的,Spring的web框架帮我们做了很多事情,让我们可以更多的专注于我们的业务代码,接触过Spring MVC开发的都知道什么是MVC(Model、View、Controller),但是Spring MVC的请求过程是怎么样的,估计一部分人都不清楚,下图是SpringMVC的请求流程。 用户发起请求到Servlet,也就是Spring MVC的Di原创 2018-01-15 20:04:02 · 2086 阅读 · 0 评论 -
Spring装配Bean之XML装配Bean
上一篇文章我们讲了如何使用Java告诉Spring怎么装配Bean,这章讲解一下一个古老的方式,也就是通过XML装配Bean,为什么称它古老呢,因为最开始的Spring版本都是通过XML进行装配的,虽然古老,但是我们还是要讲解一下它,毕竟很多老项目都是使用了XML配置。XML配置规范在JavaConfig时,我们需要以@Configuration标识某个类作为我们的类,然后在这个类中定原创 2018-01-05 15:53:46 · 287 阅读 · 0 评论 -
零XML配置 SpringMVC 进阶之路 - 配置FreeMarker
上一篇文章,我们讲解了添加消息转换器的过程,消息转换器只有在@ResponseBody注解下才能生效,也就是我们说的Rest接口,那么渲染页面怎么配置呢? 一般情况下,SpringMVC肯定少不了Views层,主流的Views框架有FreeMarker, Velocity, Tiles, Groovy Markup 和JSP,而我比较喜欢FreeMarker,因为它的语法和Rails很像(笔者是...原创 2018-02-08 20:39:33 · 802 阅读 · 0 评论 -
零XML配置 SpringMVC 进阶之路 - 搭建环境
写了快两年的Java代码了,发现自己居然不会搭建一套Spring mvc环境出来,只会添砖加瓦,说来就惭愧了,为了弥补这点的缺陷,也为了以后更好的借助已有的SpringMVC项目学习更多的知识,我决定从零搭建一套自己的SpringMVC。网上搜索大部分都是基于XML配置的环境搭建,基于XML大部分是因为历史项目的原因无法切换成基于JavaConfig来进行配置,但是基于JavaConfig是未原创 2018-02-06 15:34:26 · 596 阅读 · 0 评论 -
初探Spring
Spring是什么,这里就不介绍了,简单的来说,Spring就是一个可以简化我们开发的框架,它的结构图如下: 它的最基础的包有Beans、Core、Context、Expression、Context-support。 Spring怎么容纳我们的程序呢? 我们写一个最简单的基于XML配置的Spring程序,由Spring管理我们的Bean。例子是人类打电话。Spring的设计原则是面向接口原创 2017-12-31 11:56:28 · 264 阅读 · 0 评论 -
Java实现AOP的两种方式
知道Spring的都知道Spring的切面编程AOOP(Aspect Oriented Programming),这里我们不讲Spring的切面,后面有机会我们再来解剖Spring的切面编程,我们想讲解一下普通的Java代码中怎么实现AOP,有两种方式实现AOP切面,一种是原生SDK实现,一种是基于三方包cglib。原创 2017-12-07 14:43:32 · 40050 阅读 · 4 评论 -
spring boot集成redis
遵守“约定大于配置”原则的Spring boot集成常用的NO SQL是很方便的,本例拿redis做一个简单的demo,使用Redis的set和get命令。 引入redis的依赖包。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b原创 2017-12-07 13:59:39 · 1874 阅读 · 0 评论 -
Spring之多线程
通过@Async注解来声明的任务是一个异步任务,那是不是,只要通过@Async注解声明后,就异步执行了呢?但是肯定不是的,需要通过@EnableAsync注解来声明配置类来开启对异步的支持。配置类@Configuration@ComponentScan("ch3.taskexecutor")@EnableAsyncpublic class Config {}服务类@Servicepubli原创 2017-07-11 19:51:10 · 421 阅读 · 0 评论 -
Spring boot 入门介绍
Spring boot 入门介绍最近发现了一本书,特别适合spring入门者使用,书名叫《JavaEE开发的颠覆者:Spring Boot实战》,笔者就是入门者,为了尽快入门,也为了记录一些常用的知识点,笔者会花一个月到两个月的时间更新书本里的常用知识点。这期进行原创 2017-07-03 14:01:08 · 304 阅读 · 0 评论 -
Scope注解
Scope 描述了Spring创建一个bean的行为,Spring的Scope有以下几种,通过@Scope注解实现。 1. Singleton: 表示一个容器中只有一个Bean实例,这个配置为Spring的Bean的默认配置。 2. Prototype: 每次注入时,都会新建一个对象。 3. Requst: Web项目中,给每一个http request新建一个示例。 4. Session:原创 2017-07-03 20:37:34 · 868 阅读 · 0 评论 -
Spring MVC工作流程图
Spring MVC的工作流程图以及介绍。转载 2017-07-03 23:16:26 · 567 阅读 · 0 评论 -
Spring 请求参数乱码
背景今天开发了一个Post接口,用来修改Bug的信息,post的参数有中文,作为一个初学者只能上网查查别的解决方案了,大部分的解决方案都差不多,但是参照别人的方案配置上以下配置之后,却没有解决。 配置如下: <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.spri原创 2017-07-04 14:04:10 · 469 阅读 · 0 评论 -
freemarker简易教程
引进freemarker的包最近Spring项目的views使用了freemarker这个模板渲染引擎,Spring mvc使用freemarker需要在pom.xml(maven包管理配置)引入一下包: <!-- 引入Freemarker开包 --> <!-- 需要这个包, 因为在配置springmvc freemarker时, 需要用到该包的类 --> <dependenc原创 2017-07-04 16:10:39 · 444 阅读 · 0 评论 -
<mvc:resources> 标签
spring mvc 中的标签<mvc:resources mapping="***" location="***">标签是用来进行配置静态资源访问的。 比如以下配置:<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.Dispatch原创 2017-07-06 13:49:37 · 2084 阅读 · 0 评论 -
mybatis定义xml大于号小于号等会转义的符合处理
mybatis在xml的 <(小于号) 会转换为xml的标示符,有两种方法可以处理。 第一种,用转义符代替: 转义符 符号 说明 < < 小于号 > > 大于号 & & 和 ' ' 单引号 " " 双引号第二中是用![CDATA[ ]]>进行说明,不进行转义。 由于特殊符号对程序员很不原创 2017-07-26 18:00:35 · 1798 阅读 · 0 评论 -
VO、DTO、DO、PO的概念、区别和用处
本篇文章主要讨论一下我们经常会用到的一些对象:VO、DTO、DO和PO。 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念。概念VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模转载 2017-07-26 18:12:36 · 457 阅读 · 0 评论 -
Spring注入值(Value注解)
背景Spring开发过程中经常遇到需要把特殊的值注入到成员变量里,比如普通值、文件、网址、配置信息、系统 变量等等。Spring主要使用注解@Value把对应的值注入到变量中。 常用的注入类型有以下几种: 1. 注入普通字符串。 2. 注入操作系统属性。 3. 注入表达式运算结果。 4. 注入其他bean的属性。 5. 注入文件内容。 6. 注入网址信息。 7. 注入属性文件。示例准原创 2017-07-05 15:19:05 · 16466 阅读 · 2 评论 -
搭建简单的Restful风格的web服务
笔者最近在学习Spring相关的知识,坚信一句话,任何教程都没有官网教程全面、易懂,所以笔者计划参照官网的教程写一些例子,自己学习一下,也做下记录,由于官方教程大部分都是基于Spring boot,所以笔者也按Spring boot框架来编写代码。 工具用的Idea和包管理器用的通用的Maven,教程。 第一个例子肯定就是程序员的开始——Hello World。 首先我们定义一个类,用来作为R原创 2017-12-05 23:43:10 · 1552 阅读 · 0 评论 -
Spring之RestTemplate介绍
RestTemplate设计是为了Spring更好的请求并解析Restful风格的接口返回值而设计的,通过这个类可以在请求接口时直接解析对应的类。 在前一篇文章《搭建简单的Restful风格的web服务》的基础上,我们写一个client调用一下http://localhost:8080/hello这个接口,返回为我们自定义的ResultBean。 先重写一下ResultBean的toString原创 2017-12-06 17:16:20 · 674 阅读 · 0 评论 -
零XML配置 SpringMVC 进阶之路 - 配置消息转换器
上一篇文章我们搭建好了基础环境,写了一个简单的controller。 使用RestController写一个简单的接口,返回了一串”helloWorld”字符串,现在我们改下controller的内容:@RestController@RequestMapping("/api")public class TestController { @GetMapping("/hello"原创 2018-02-07 16:07:26 · 1857 阅读 · 0 评论