bean

Spring核心技术之Ioc和AOP

烂漫一生 提交于 2020-03-10 07:52:08
一、Spring应用环境的配置: 1. 在classpath中添加以下包: 1) SPRING_HOME/dist/spring.jar、 2) SPRING_HOME/lib/jakarta-commons/commons-logging.jar 3) SPRING_HOME/lib/log4j/log4j-1.2.xx.jar 2.在classpath中添加Spring的配置文件:applicationContext.xml 在SPRING_HOME/samples/jpetstore/war/WEB-INF目录下有样板文件。 二、IoC容器: 1. IoC概念:反向控制、控制反转。对象不需要主动去查找依赖类的实例。而是由其它应用给它注入。 DI:依赖注入。 2. Spring对IoC的支持:Spring 提供了BeanFactory和ApplicationContext这两种IoC容器,来帮助你管理Bean、Bean之间的依赖关系以及Bean的生命周期。 三、Spring中IoC: 1. Bean装配:在Spring配置文件中用<bean>标记来装配一个Bean. <bean id="Bean在Spring容器中的唯一标识" class="Bean类的全限定名">...</bean> 2. 用setter方法注入它的依赖类: 1)

Spring AOP

非 Y 不嫁゛ 提交于 2020-03-09 17:51:35
Spring AOP 手动配置通知类 前置通知 import java.lang.reflect.Method; import org.springframework.aop.BeforeAdvice; public class GreetingBeforAdvice implements MethodBeforeAdvice { @Override public void before(Method method,Object []params,Object obj) throws Throwable{ String name=String.valueOf(params[0]); System.out.println("###前置通知:参数," + name ); } } 后置通知 import java.lang.reflect.Method; import org.springframework.aop.AfterReturningAdvice; public class GreetingAfterAdvice implements AfterReturningAdvice { @Override public void afterReturning(Object obj, Method method, Object[] params,Object arg3) throws

Spring第五章:AOP(Schema-based)

Deadly 提交于 2020-03-09 17:50:30
AOP 链接:https://pan.baidu.com/s/1qS-AaZHSLUwxYSjc9PHDYA 提取码:np2q   1.AOP: 中文名称面向切面编程   2. 英文名称 :(Aspect Oriented Programming)   3. 正常程序执行流程都是纵向执行流程     3.1 又叫面向切面编程 , 在原有纵向执行流程中添加横切面     3.2 不需要修改原有程序代码       3.2.1 高扩展性       3.2.2 原有功能相当于释放了部分逻辑 . 让职责更加明确 .          4. 面向切面编程是什么 ?     4.1 在程序原有纵向执行流程中 , 针对某一个或某一些方法添加通 知 , 形成横切面过程就叫做面向切面编程 .   5. 常用概念     5.1 原有功能 : 切点 , pointcut     5.2 前置通知 : 在切点之前执行的功能 . before advice     5.3 后置通知 : 在切点之后执行的功能 ,after advice     5.4 如果切点执行过程中出现异常 , 会触发异常通知 .throws advice     5.5 所有功能总称叫做切面 .     5.6 织入 : 把切面嵌入到原有功能的过程叫做织入   6.spring 提供了 3 种 AOP 实现方式     6.1

IDEA中使用maven整合mybatis与spring

微笑、不失礼 提交于 2020-03-09 16:39:05
整合思路 需要spring通过方式管理SqlSessionFactory. spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession.(Sping和mybati整合自动完成). 持久层的mapper都需要有spring进行管理. 整合环境 创建一个新的java工程. mybatis的jar包,spring的jar包 spring和mybatis的整合包 参考: SSM的maven工程的创建 代码操作 一、创建配置文件:applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=

json乱码处理

ぐ巨炮叔叔 提交于 2020-03-09 10:55:43
(1)@RequestMapping配置produce属性 @RequestMapping(value = "/test",produces = "application/json;charset=utf-8") (2)MVC配置文件中配置 <mvc:annotation-driven> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg value="UTF-8"/> </bean> <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"> <property name="failOnEmptyBeans" value="false"/> </bean> </bean> </mvc:annotation-driven> 来源: CSDN 作者: 慕宗悫之长风 链接: https://blog.csdn.net/qq_44776721/article/details/103749584

rabbitMQ+springboot整合例子

余生长醉 提交于 2020-03-09 10:05:05
关于什么是rabbitmq,请看另一篇文: http://www.cnblogs.com/boshen-hzb/p/6840064.html 一、新建maven工程:springboot-rabbitmq 二、引入springboot和rabbitmq的依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.springboot.rabbitmq</groupId> <artifactId>springboot-rabbitmq</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot-rabbitmq</name> <description>springboot-rabbitmq</description> <parent> <groupId>org

Jackson序列化实例

佐手、 提交于 2020-03-09 09:04:15
参考文章 Jackson使用ContextualSerializer在序列化时获取字段注解的属性 使用BeanSerializerModifier定制jackson的自定义序列化(null值的处理) 关于使用ContextualSerializer的补充       BeanSerializerFactory中有如下代码,       关于设置SerializerModifier,如下        两种实现序列化的方式   方式1:自定义json serialize 实现ContextualSerializer接口   1. bo中自定义@ReferSerialTransfer注解      2. 自定义注解 ReferSerialTransfer.java      3. 自定义 json serialize实现      4. springmvc 配置文件中 converter的配置 <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg value="UTF-8" /> <property name

spring 之7种重要设计模式

ぃ、小莉子 提交于 2020-03-09 08:52:44
Spring中涉及的设计模式总结 1.简单工厂(非23种设计模式中的一种) 实现方式: BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。 实质: 由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 实现原理: bean容器的启动阶段: 读取bean的xml配置文件,将bean元素分别转换成一个BeanDefinition对象。 然后通过BeanDefinitionRegistry将这些bean注册到beanFactory中,保存在它的一个ConcurrentHashMap中。 将BeanDefinition注册到了beanFactory之后,在这里Spring为我们提供了一个扩展的切口,允许我们通过实现接口BeanFactoryPostProcessor 在此处来插入我们定义的代码。典型的例子就是:PropertyPlaceholderConfigurer,我们一般在配置数据库的dataSource时使用到的占位符的值,就是它注入进去的。 容器中bean的实例化阶段: 实例化阶段主要是通过反射或者CGLIB对bean进行实例化,在这个阶段Spring又给我们暴露了很多的扩展点: 各种的Aware接口 ,比如

jackson序列化和反序列化Json

依然范特西╮ 提交于 2020-03-09 08:44:01
jackson包提供了java对象与json相互转换的API。 jackson转换机制 Jackson要求java对象是一个POJO对象,即它是一个普通JavaBean对象。此外,如果字段是用private修饰的,则必须有getXXX()方法,否则字段用public修饰。 json常见格式如下 { "key1" : value, "key2" : [...], "key3" : {...} } jackson把JavaBean对象的每个字段映射为json的键,json键值由JavaBean的getXXX()方法确定。 json键值从形式上看,可以分为基本类型(字符串、数值)、数组、字典。当JavaBean的字段声明为基本类型时对应json的基本类型,当JavaBean声明为数组或链表时对应json的数组类型,当JavaBean声明为字典或对象时对应json的字典类型。 序列化 定义一个符合JavaBean规则的类 package com.weixia.Json; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class Bean { private String name; private int[] stature; private Friend friend;

Java Bean Copy 问题发现

你离开我真会死。 提交于 2020-03-09 08:07:39
前因简介 在工作过程中使用 Java Bean 作为容器盛放数据日常工作。我在工作过程中发现了这么一个问题: 业务主体是,对一个订单进行拆分。订单分为主体部分和明细部分,明细可以有多个,拆分之后对订单重新整理计算总金额。具体业务比这个要复杂,此处简单说明问题产生的部分。 业务模拟 此处定义 class Order,class OrderHead,OrderDetail 作为 Java 对象,并定义简单的属性,如下所示: @Setter @Getter class Order { private OrderHead orderHead ; private List < OrderDetail > orderDetails ; } @Setter @Getter @AllArgsConstructor @NoArgsConstructor class OrderHead { private String orderId ; private String productName ; private String orderMoney ; } @Setter @Getter @AllArgsConstructor @NoArgsConstructor class OrderDetail { private String detailId ; private String