1、Spring In Action 4th笔记(1)】的更多相关文章

Spring In Action 4th笔记(1) 2016-12-28 1.Spring是一个框架,致力于减轻JEE的开发,它有4个特点: 1.1 基于POJO(Plain Ordinary Java Object,简单Java对象)的轻量级和最小倾入式编程: 关于侵入式,引入一篇文章:http://www.myexception.cn/program/614076.html 侵入式和非侵入式的区别 简单说一下我的理解吧.假设大家都想要把用户代码塞到一个框架里.侵入式的做法就是要求用户代码"知…
前提:本文中的AOP仅限于Spring AOP. 先说说为什么需要AOP 最简单的一个例子就是日志记录,如果想记录一些方法的执行情况,最笨的办法就是修改每一个需要记录的方法.但这,真的很笨... 好的方法,应该是通过反射获取方法,然后去匹配,如果需要记录日志,那就调用日志方法即可. 这就是AOP 的Weaving,俗称编织.织入,就是将需要添加的功能编织到现有功能中,而不需要修改现有代码. 另一个例子,不那么大众的需求:我想给一个对象添加方法,怎么实现? 如果有学过js.Python等动态语言,…
读spring in action. 环境搭建 quick-start依赖注入 面向切面 1.环境搭建 jdk1.8 gradle 2.12 Intelij idea 2016.2.1 1.1创建一个gradle项目 在idea中,new -> project -> gradle 创建一个空项目.创建成功后修改build.gradle : group 'com.test' version '1.0-SNAPSHOT' apply plugin: 'java' apply plugin: 'wa…
在spring in action中论述了:DispatcherServlet和ContextLoaderListener的关系,简言之就是DispatcherServlet是用于加载web层的组件的上下文.ContextLoadListener是加载 其他组件的上下文. 第一种方式:纯注解的方式: 在spring4.0版本以上,倾向用注解的方式配置DispatcherServlet和ContextLoaderListener.配置方式如下: 思路:一个类只要继承AbstractAnnotati…
在讲用纯注解的方式实现springmvc之前先介绍一个类:AbstractAnnotationDispatcherServletInitializer.这个类的作用是:任何一个类继承AbstractAnnotationDispatcherServletInitializer,将会自动的被用为配置DispatcherServlet,以及在DispatcherServlet中的的spring容器(如:spring-servlet.xml)文件. spring in action的描述是:any cl…
一:这里先说一下DI(Dependency Injection)依赖注入有种表现形式:一种是CI(Constructor Injection)构造方法注入,另一种是SI(Set Injection) set 注入.这篇随笔讲的是第一种构造方法注入(Constructor Injection). 其实DI(Dependency Injection)依赖注入你不妨反过来读:注入依赖也就是把"依赖"注入到一个对象中去.那么何为"依赖"呢?依赖就是讲一个对象初始化或者将实例…
约定: 一.@Xxx Class 表示被@Xxx注解的类.同理还有@Xxx注解的字段或方法. 例如:@Bean Method. 二.@Component Class 同时代指 @Controller.@Service.@Repository. All beans in a Spring application context are given an ID. -- 如果不指明,也会给定一个默认的ID:类名,首字母小写.[]上面这句,不适合XML方式,因为XML方式的默认ID是全路径再加上#{n}…
面向切面的Spring 2015年10月9日 11:30             屏幕剪辑的捕获时间: 2015-10-9 14:30             屏幕剪辑的捕获时间: 2015-10-9 14:38             屏幕剪辑的捕获时间: 2015-10-9 14:38                               屏幕剪辑的捕获时间: 2015-10-10 14:42                   屏幕剪辑的捕获时间: 2015-10-10 14:43…
装配bean 2015年10月9日 9:49             Sprng中,对象无需自己负责查找或创建其关联的其他对象.相关,容器负责吧需要相互协作的对象引用赋予各个对象. 创建应用对象之间协作关系的行为通常被称为装配(wiring).这是依赖注入的本质.             声明bean       典型的xml配置文件             屏幕剪辑的捕获时间: 2015-10-9 10:17       spring核心自带了10个命令空间             屏幕剪辑的…
Spring 核心       Spring的主要特性仅仅是 依赖注入DI和面向切面编程AOP       JavaBean 1996.12 Javav 规范针对Java定义了软件组件模型,是简单的Java对象不仅可以重用,而且可以轻松的构建更复杂的应用.没有提供诸如事务支持.安全.分布式计算等服务.       BJB 1998.3 提供了必须的企业级服务,但是不再简单, 声明式编程简化开发 部署描述符和配套代码实现异常复杂. Java 组件开发, AOP 和DI 为POJO提供了类似EJB的…
第一种方式:JNDI的方式. 用xml配置的方式的代码如下: 1 <jee:jndi-lookup jndi-name="/jdbc/spittrDS" resource-ref="true" id="dataSource"/> 用注解方式的代码如下: 1 @Bean 2 public JndiObjectFactoryBean jndiObjectFactoryBean(){ 3 JndiObjectFactoryBean jndi…
spring 中scope的值有四个:分别是:singleton.prototype.session.request.其中session和request是在web应用中的. 下面证明当scope为prototype时每次创建的对象是不同的. 示例代码如下: package com.advancedWiring.ambiguityIniAutowiring2; import org.springframework.beans.factory.BeanNameAware; import org.sp…
@Profile注解是@Conditional注解的一个例子.即@Profile也是用@Conditional注解来实现的. 必须让条件实现Condition这个接口. 下面的案例讲如果环境中有magic这个属性,则能通过条件,spring会创建bean.反之如果环境中没有magic这个属性,则不能通过条件,spring就不会创建bean,会报错. 案例的代码如下: MagicBean的代码如下: package com.advancedWiring.conditionalBeans; impo…
@Autowired这个注解的意思就是自动装配.他把一个bean对象自动装配到另一个对象中.下面的案例证明了spring的自动装配. 定义一个Sixi类.代码如下: package com.qls.autowired.soundsystem; import org.springframework.stereotype.Component; /** * Created by ${秦林森} on 2017/6/8. */ @Component public class Sixi { private…
一:spring的容器就是bean所居住的地点,这个居民点有很多的bean,有外来的bean(相当于创建了一个bean),有出去谋生的(相当于消亡了一个bean),他们之间都有某种联系 (bean与bean之间的联系spring通过wiring 来实现).而这个居民点在spring中就是BeanFactory这个接口,至于ClassPathXmlApplicationContext.AnnotationConfigApplicationContext. AnnotationConfigWebAp…
一: aop的思想的来在哪里? 一个系统一般情况下由多个组件组成,而每一个组件除了干自己的本职工作以外,有时还会干一些杂活(如:日志(logging).事务管理(transaction manager).安全(secure)),而恰好这些杂活其他组件也要干,那么这时一个人想了想能不能只让每个组件干好自己的本职工作,这些杂活由专门的人负责,这样的工作效率肯定会大大提高. 这专门负责杂活的人就是切面(Aspect).这就是aop思想的来源. 二:aop的核心代码: <bean id="mins…
第一章 1.Spring採用4种策略减少Java开发复杂度 基于POJO的轻量级和最小侵入性编程 依赖注入和面向接口实现松耦合 基于切面和惯例进行声明式编程 通过切面和模板降低样板式代码 PS:POJO POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称. 使用POJO名称是为了避免和EJB混淆起来, 并且简称比較直接. 当中有一些属性及其getter setter方法的类,没有业务逻辑.有时能够…
需要引入的ja包 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</g…
Spring基础 AOP 面向切面编程 通知.连接点.切点.切面 Spring提供 4 种类型的AOP支持: 基于代理的经典SpringAOP:使用ProxyFactoryBean. 纯POJO切面:使用XML配置: @ASpectJ注解驱动的切面: 注入式AspectJ切面. 前三种都属于SpringAOP,基于代理(JDK动态代理和Cglib).第四种属于AspectJ. 通过切点来选择连接点 切点表达式: execution(* a.b.c.method(...)) && bean(…
Spring基础 IoC 控制反转, 也称为DI-依赖注入 一.装配bean 推荐顺序:自动装配 -> JavaConfig装配 -> XML装配 1. 自动装配 @Component 注解:表明该类会作为组件类,并告知Spring要为这个类创建bean.该bean的ID为第一个字母小写的类名: @ComponentScan 注解:告诉Config配置类启用组件扫描,默认扫描的基础包为该配置类相同的包以及下面的子包. @Autowired 注解:将bean注入对象中 @Test 注解:测试用,…
首先解释一下@Primary和@Qualifier这两个注解的意思:@Primary的意思是在众多相同的bean中,优先使用用@Primary注解的bean.而@Qualifier这个注解则指定某个bean有没有资格进行注入. 示例代码的思路是:1.一个接口Dessert和这个接口的三个实现类,2.再在一个类(AbrahamLincoln)中自动注入Dessert这个接口,3.用自动扫描机制自动创建bean. 如果不用@Primary和@Qualifier注解,势必出现如下错误:NoUnique…
SpEl语言的目的之一是防止注入外部属性的代码硬代码化.如@Value("#{student.name}")这个注解的意思是把Student类的name的属性值注入进去.其中student指向Student,是Student的id. SpEl的作用是: 1.The ability to reference beans by their IDs; 2.Invoking methods and accessing propeerties on objects 3.Mathmatical,r…
@PropertySource的写法为:@PropertySource("classpath:某个.properties文件的类路径") 首先来看一下这个案例的目录结构,重点看带红色圆圈的.如下图所示: 从上图中可以看出student.properties文件的类路径是: com/advancedWiring/ambiguityIniAutowiring2/student.propertiesstudent.properties的代码如下: #用配置文件的形式,避免注入属性值的硬代码化…
bean如果不知名id是什么它一般都有一个id或者讲名字. 第一种情况:组件扫描的情况:默认的id号或者bean的name是类名的首字母小写. 代码如下: package com.qls.beanlife2; import org.springframework.beans.factory.BeanNameAware; import org.springframework.stereotype.Component; /** * Created by ${秦林森} on 2017/6/7. */…
bean 的生命周期分为:一个是ApplicationContext的容器的bean的生命周期,另一个是BeanFactory容器的生命周期. 首先介绍一下:ApplicationContext的容器的bean的生命周期: 一共13步步骤如下: Instaniate--->Populate properties--->BeanNameAware's  setBeanName--->BeanFactoryAware's setBeanFactory-->ApplicationCont…
最近一段时间重新学习了一遍SPRING,现在对这些笔记整理一下,一来算是对之前的学习有一个交代,二来当是重新学习一次,三来可以留下备份 这次学习中以SPRING IN ACTION 4这学习资料,整书内容包括有: Spring基础,Springmvc基础,Spring处理和持久化数据,Spring应用程序与其他系统集成:总结中并不包含Spring web flow和Spring security,websocket和jmx相关部分 一.Spring基础 Spring 4初窥: Spring的4种…
Web.xml<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/jav…
action学习笔记2-大约action method讨论 Action运行的时候并不一定要运行execute方法,能够在配置文件里配置Action的时候用method=来指定运行哪个方法 也能够在url地址中动态指定(动态方法调用DMI)(推荐) 方法一 <struts> <constant name="struts.devMode" value="true" /> <package name="user" ext…
绪论 前几天我用一种方式实现了spring cloud的高可用,达到两个注册中心,详情见spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一),今天我意外发现,注册中心可以无限的增加,并这种方法也比较简洁,这里分享给大家 spring cloud 高可用注册中心(Eureka)(三个注册中心)的实现 1.创建工程,这里只需要两个工程,一个注册中心一个测试客户端,不知道怎么创建的可以看spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一) 2.在工程…
这段时间,开始学习java吧,因为C sharp 学习了java的大量语法格式,所以,留意下,就不会错了,java 有的c sharp也有,而且之前我也学习过java的桌面开发,但是一下子上来就要自己研究spring in action 这本书,压力,,,唉,多谷歌or百度吧,人还是要靠自己理解的.不多说.. spring是个什么现在还很模糊,但是知道使用到依赖注入(DI)然后通过*.xml文件来配置.而依赖注入,我的认知就是一个类A的一个函数,需要调用类B ,A.FUN(CLASS B),然后…