1.基于注解开发AspectJ (1)AspectJ注解 基于注解开发AspectJ要比基于XML配置开发AspectJ便捷许多,所以在实际开发中推荐使用注解方式.关于注解的相关内容如下: @Aspect:用于定义一个切面,注解在切面类上: @Pointcut:用于定义切入点表达式.在使用时需要定义一个切入点方法,该方法是一个返回值void且方法体为空的普通方法: @Before:用于定义前置通知.在使用时通常为其指定value属性值,该值可以是已有的切入点,也可以直接定义切入点表达式: @Af…
Spring 框架学习笔记(1) 一.简介 Rod Johnson(spring之父) Spring是分层的Java SE/EE应用 full-stack(服务端的全栈)轻量级(跟EJB比)开源框架,以IoC(Inversion of Controll,控制反转,解耦)和AOP(Aspect oriented programming,面向切面编程,底层是动态代理)为内核. 提供:能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业应用开源框架. 表示层Spring MV…
Spring Boot可以更为方便地搭建一个Web系统,之后服务器上部署也较为方便 创建Spring boot项目 1. 使用IDEA创建项目 2. 修改groupid和artifact 3. 一路next,自动IDEA就会自动下载依赖的jar包 4. 运行 之后运行项目(Application类),打开http://localhost:8080就会出现下面的白板页面,说明已配置成功 项目结构说明及使用 项目结构说明 我们可以看见项目中是这样的结构,Spring boot内置了tomcat服务器…
之前写的那篇Spring框架学习笔记(5)--Spring Boot创建与使用,发现有多小细节没有提及,,正好现在又学习了mybatis plus这款框架,打算重新整理一遍,并将细节说清楚 1.通过IDEA创建spring boot 2.项目相关配置 只需要修改第一个和第二个,下面的其他选项会自动改变 3.勾选需要的库 这一步勾选了之后,spring boot会自动地在pom.xml文件中添加相关对应的第三方开源库的依赖 这里如果不熟悉的话,建议不要勾选mybatis和mysql,这样创建出来的…
使用代理对象实现AOP虽然可以满足需求,但是较为复杂,而Spring提供一种简单的实现AOP的方法AspectJ 同样的计算器的DEMO 首先配置applicationContext.xml <!-- 配置自动扫描的包 --> <context:component-scan base-package="com.atguigu.spring.aop"></context:component-scan> <!-- 配置自动为匹配 aspectJ 注…
AOP(面向切面编程) AOP(Aspect-Oriented Programming, 面向切面编程): 是一种新的方法论, 是对传统 OOP(Object-Oriented Programming, 面向对象编程) 的补充. AOP 的主要编程对象是切面(aspect), 而切面模块化横切关注点. 在应用 AOP 编程时, 仍然需要定义公共功能, 但可以明确的定义这个功能在哪里, 以什么方式应用, 并且不必修改受影响的类. 这样一来横切关注点就被模块化到特殊的对象(切面)里. AOP 的好处…
     上篇我们介绍了Spring中有关高级依赖关系配置的内容,也可以调用任意方法的返回值作为属性注入的值,它解决了Spring配置文件的动态性不足的缺点.而本篇,我们将介绍Spring的又一大核心思想,AOP,也就是面向切面编程.这是对面向对象编程的一个扩展,即便问世不长,但是已经成为当下最流行的编程思想之一.本篇主要涉及以下内容: Spring中的后置处理器 "零配置"实现Bean的配置 Spring AOP 一.后置处理器 为了实现良好的扩展性,Spring允许我们扩展它的IO…
以下是咕泡公开课的学习笔记 一.创建工程springdemo 二.在pom中配置servlet <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> 三.w…
SpringMVC框架是基于Spring框架,可以让我们更为方便的进行Web的开发,实现前后端分离 思路和原理 我们之前仿照SpringMVC定义了一个自定义MVC框架,两者的思路其实都是一样的. 建议结合两篇文章进行学习 JSP学习笔记(6)-- 自定义MVC框架 首先,提供一个前置拦截器(DispatchServlet),拦截url请求,之后,根据url请求,跳转到Controller层,执行操作,之后再返回数据 入门 我的demo是使用了maven框架 1.创建maven项目 按照下图进行…
Spring提供了一套管理项目中的事务的机制 以前写过一篇简单的介绍事务的随笔:http://www.cnblogs.com/xuyiqing/p/8430214.html 还有一篇Hibernate的事务管理:http://www.cnblogs.com/xuyiqing/p/8449167.html 可以做个对比 Spring管理事务特有的属性: 事务传播行为:事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行. 例…
Spring框架介绍: Spring框架涵盖了web.service.dao三层,本身是一个存放对象的容器 形象来说:Spring是项目中对象管家 Spring框架的两大核心思想:控制反转(IOC).面向切面(AOP) 搭建: 导包: 官网下载Spring框架:http://repo.springsource.org/libs-release-local/org/springframework/spring/ 使用的框架是4.2.4,上边的3.0.2是一个jar包大合集,第三方工具类 解压4.2…
Spring框架的主要作用,就是提供了一个容器,使用该容器就可以创建并管理对象.比如说Dao类等,又或者是具有多依赖关系的类(Student类中包含有Teacher类的成员变量) Spring有两个核心概念,一个是控制反转(IOC,全称为Inverse of Control),另一个则是面向切面编程(AOP,全称为 Aspect Oriented Program) Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of…
1.创建一个新的项目,并添加Spring框架 2.创建HelloWorld.java package com.broadtext.beans.helloworld; public class HelloWorld { private String name; public HelloWorld() { } @Override public String toString() { return "HelloWorld [name=" + name + "]"; } p…
JDBC模板:Spring中对数据库的操作. 这一部分对熟悉DBUtils的QueryRunner的开发者来说,非常简单 这是以前我简单写的dbutils的知识: http://www.cnblogs.com/xuyiqing/p/8397428.html 导包: 1.spring中的包 2.c3p0连接池包 3.数据库驱动包 最终导入这些包: 2.准备数据库测试: 简单的测试: @Test public void fun1() throws Exception{ //准备连接池 ComboPo…
介绍 概念 面向切面编程AOP与面向对象编程OOP有所不同,AOP不是对OOP的替换,而是对OOP的一种补充,AOP增强了OOP. 假设我们有几个业务代码,都调用了某个方法,按照OOP的思想,我们就会将此方法封装在一个类中,之后通过对象.方法名调用 我们可以看作我们的业务代码被其他代码入侵或者是业务代码被其他与业务不相关的代码入侵了 这个时候,如果我们使用AOP进行编写代码,我们的业务代码就可以不需要写其他与业务相关的代码,这样就可以保证业务代码的纯洁性 AOP运行流程 通过配置文件,给各个业务…
Spring+Spring MVC+MyBatis+Maven SSM整合的核心还是Spring+MyBatis的整合,回顾一下MyBatis操作数据库流程,我们是使用一个SQLSessionFactory对象来获得SQLSession,之后再进行CRUD操作. 现在,有了spring,我们就把SQLSessionFactory通过spring进行装载和管理. 如果是想直接使用的话,请去SSM-Maven-Archetype 步骤 1.创建maven项目 2.添加依赖 <?xml version…
AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入封装.继承.多态等概念来建立一种对象层次结构,用于模拟公共行为的一个集合.不过OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能.日志代码往往横向地散布在所有对象层次中,而与它对应的对象的核心功能毫无关系对于其他类型的代码,如安全性.异常处理和透明的持续性也都是如此,这种散布在各…
1.导包: 导入spring中的这两个包 再导入其他包(网上下载): 2.准备目标对象: package service; public class UserServiceImpl implements UserService { @Override public void save() { System.out.println("保存用户!"); } @Override public void delete() { System.out.println("删除用户!&quo…
最近忙着都没时间写博客了,做了个项目,实现了下载功能,没用到上传,写这篇文章也是顺便参考学习了如何实现上传,上传和下载做一篇笔记吧 下载 主要有下面的两种方式: 通过ResponseEntity实现 通过写HttpServletResponse的OutputStream实现 我只测试了ResponseEntity<InputStreamResource>这种方法可行,另外一种方法请各位搜索资料. 我们在controller层中,让某个方法返回ResponseEntity,之后,用户打开这个ur…
什么是事务 举例:A给B转500,两个动作,A的账户少500,B的账户多500 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 一.注解添加事务管理方法: 1.配置文件添加事务管理器并启用 <!-- 1. 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransact…
一.使用JdbcTemplate和JdbcDaoSupport 1.配置并连接数据库 ①创建项目并添加jar包,要比之前Spring项目多添加两个jar包c3p0-0.9.1.2.jar和mysql-connector-java-5.1.7-bin.jar ②创建db.properties添加以下配置 pp为数据库名initPoolSize和maxPoolSize随意 jdbc.user=root jdbc.password=root jdbc.driverClass=com.mysql.jdb…
简单写一个类做示例: package bean; public class User { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer…
最近接外包,需要部署服务器,便是参考了网上的几篇博文,成功在阿里云服务器成功部署了Spring Boot项目,特记下本篇笔记 Spring Boot项目打包 这里说一下部署的一些问题 1.mysql驱动 创建spring boot的时候,在界面选择添加了MySql的依赖,但是,实际项目测试的时候,发现驱动错误,所以,得把MySql驱动改为下面的驱动 <!-- mysql驱动 --> <dependency> <groupId>mysql</groupId>…
最近需要设计一个API服务器,想要把API接口搞得规范一下,就通过网上搜集到了一些资料,以下便是自己的一些理解以及相关的具体实现 本文采用的是spring boot+maven的方案 restful规范 这个规范我在这里也不打算长篇大论地讲解,怎么说呢,有人喜欢有人讨厌,我也不去争,因为我经验不多,看法和大佬有所不同. restful规范简单来说,就是通过一些关键字去定义url接口,从而让url具有更好的可读性,如下面举个例子 # 查询所有用户 http://localhost:9200/shu…
一.bean的继承 Spring通过bean标签的parent属性来实现bean的继承,这个继承的概念只存在于配置层面,也就是说bean只会继承其父bean的属性值. 父bean可以通过abstract="true"设置为抽象bean,抽象bean无法实例化,只能作为一个模版用来被继承属性值. <!-- bean的继承只在配置层面 --> <!-- 使用abstract属性创建一个模版bean,模版bean无法通过IOC容器实例化只能用来继承属性 --> <…
1.通过bean标签的autowire属性可以实现bean属性的自动装配. 创建一个新的Spring配置文件beans-autowire.xml,这里我们配置了3个bean,Address.Car.People,其中People自动装配了另外两个bean,使用的是bean标签的autowire属性,这个例子里如果将car改为car2打印出来的Person bean 的Car属性为null,即byName根据bean的setter风格进行自动装配有就装没有就不装.而使用byType的话如果配置有两…
IOC:控制反转,创建对象的权利交给Spring,Spring会自动创建对象. DI:依赖注入,操作的对象靠Spring注入,如果不使用Spring,对象的属性值是要靠setter方法来添加的,使用Spring可以由Spring在创建对象的时候为对象的属性赋值.…
1.属性注入 (1)根据setter方法属性注入,这里使用的是property标签.需要bean属性提供对应的setter方法,比如笔记(1)里的 HelloWorld使用的就是这种方法. <!-- 根据setter方法属性注入 --> <bean id="helloworld" class="com.broadtext.beans.Helloworld"> <property name="name" value=&…
一.部分标签无法使用 原因:没有util导入命名空间 解决方法:在bean配置文件头部引用命名空间 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmln…
1.配置List属性 <!-- 配置List属性 --> <bean id="person4" class="com.broadtext.beans.collection.Person"> <property name="name" value="hjj"></property> <property name="age" value="24&q…