bean

Spring控制多张表的提交事务操作

痞子三分冷 提交于 2020-03-03 05:35:19
一.Spring配置文件如下: <bean id="test" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@192.168.1.192:1521:test" /> <property name="username" value="test" /> <property name="password" value="test" /> <property name="initialSize" value="5" /> <property name="maxActive" value="10" /> </bean> <!--transactionManager --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="test" /> </bean> <bean id=

Redis Cluster 集群搭建

别等时光非礼了梦想. 提交于 2020-03-03 01:29:08
什么是 Redis-Cluster 为何要搭建 Redis 集群。 Redis 是在内存中保存数据的,而我们的电脑一般内存都不大,这也就意味着 Redis 不适合存储大数据,适合存储大数据的是 Hadoop 生态系统的 Hbase 或者是 MogoDB 。 Redis 更适合处理高并发,一台设备的存储能力是很有限的,但是多台设备协同合作,就可以让内存增大很多倍,这就需要用到集群。 Redis 集群搭建的方式有多种,例如使用 客户端分片、 Twemproxy 、 Codis 等,但从 redis 3.0 之后版本支持 redis-cluster 集群 ,它是 Redis 官方提出的解决方案 , Redis-Cluster 采用无中心结构,每个节点保存数据和整个集群状态 , 每个节点都和其他所有节点连接。其 redis-cluster 架构图如下: 客户端与 redis 节点直连 , 不需要中间 proxy 层 . 客户端不需要连接集群所有节点连接集群中任何一个可用节点即可。 所有的 redis 节点彼此互联 ( PING-PONG 机制 ), 内部使用二进制协议优化传输速度和带宽 . 分布存储机制 - 槽 ( 1 ) redis-cluster 把所有的物理节点映射到 [0-16383]slot 上 ,cluster 负责维护 node<->slot<->value (2)Redis

Spring@Import详解与使用

自闭症网瘾萝莉.ら 提交于 2020-03-02 22:32:08
在应用中,我们会把大量的类注入到IOC中,有时没有把某个类注入到IOC容器中,但在运用的时候需要获取该类对应的bean,此时就需要用到@Import注解。 一. @Import 使用 1.1 @Import 介绍 直接导入类 通过导入配置类的方式,此时的配置类需要实现 ImportSelector 或者 ImportBeanDefinitionRegistrar 注: @Import导入组件,id默认是组件的全类名 1.2 @Import 使用 1.2.1 定义几个Bean 此时并没有注入到 IOC 容器中 @Data public class SuperMan { private String name ; private Integer age ; } --------- @Data public class Man { private String userName ; private String email ; } -------- @Data public class Bule { private Integer code ; } 1.2.2 使用@Import注入 @Configuration @Import ( { SuperMan.class, SuperSelector.class,MyDefinitionRegistrar.class } ) public

spring事务失效

谁都会走 提交于 2020-03-02 20:45:15
最近在做spring 项目中突然发现事务在遇到异常是没有回滚而是提交了,在查了大量的资料之后,算是有了一点头绪,写下来方便以后查找: 前些日子一朋友在需要在目标对象中进行自我调用,且需要实施相应的事务定义,且网上的一种通过BeanPostProcessor的解决方案是存在问题的。因此专门写此篇帖子分析why。 1、预备知识 aop概念请参考【 http://www.iteye.com/topic/1122401 】和【 http://jinnianshilongnian.iteye.com/blog/1418596 】 spring的事务管理,请参考【 http://jinnianshilongnian.iteye.com/blog/1441271 】 使用AOP 代理后的方法调用执行流程,如图所示 也就是说我们首先调用的是AOP代理对象而不是目标对象,首先执行事务切面,事务切面内部通过TransactionInterceptor环绕增强进行事务的增强,即进入目标方法之前开启事务,退出目标方法时提交/回滚事务。 2、测试代码准备 Java代码 public interface AService { public void a(); public void b(); } @Service() public class AServiceImpl1 implements AService

redis与spring的集成

余生长醉 提交于 2020-03-02 18:52:23
首先需要安装redis 乌班图的安装 apt-get install redis-server 然后是修改 /etc/redis/redis.conf 文件 修改里面的 bind 127.0.0.1 改成你的外网ip这样 外网才能访问 然后/etc/init.d/redis-server restart 客户端与spring集成 需要一下jar包 http://yun.baidu.com/share/link?shareid=1006564976&uk=958682606 下载后配置applicationContext.xml spring的配置文件 加入(注意 sentinels的地址是你客户端的地址 不要与jedisConnFactory中的服务器端地址搞混) <bean id="redisSentinelConfiguration" class="org.springframework.data.redis.connection.RedisSentinelConfiguration"> <property name="master"> <bean class="org.springframework.data.redis.connection.RedisNode"> <property name="name" value="mymaster"></property> <

spring学习日志二

我只是一个虾纸丫 提交于 2020-03-02 18:16:28
一、spring依赖注入的方式 1.通过set方法来完成注入 <bean id="student" class="com.zhiyou100.xz.spring.Student" > <!-- property:通过set方法来注入Student类 的name属性值--> <property name="name" value="李四"/> <property name="age" value="18"/> </bean> 2.通过构造方法来完成依赖注入 <bean id="student2" class="com.zhiyou100.xz.spring.Student"> <!-- constructor-arg:构造方法的参数 index:第几个参数 索引从0开始 只有一个参数时,即当index="0"时value的值先默认的是string类型,要用name区分不同的参数名 name:通过构造方法的参数名 --> <!-- 当一个构造方法有两个参数时,要用两个constructor-arg表示 --> <constructor-arg index="0" value="里斯"/> <constructor-arg index="1" value="18"/> </bean> 测试 public class Test { public static void main

DelegatingFilterProxy详解

早过忘川 提交于 2020-03-02 17:14:31
全文内容转载至 spring DelegatingFilterProxy,targetFilterLifecycle的作用 ,我重新整理一下文章的结构 今天在看SHIRO的时候,看到佟刚老师用了DelegatingFilterProxy类,并使用了targetFilterLifecycle和targetBeanName属性,到网上找到了GOODDEEP先生的文章,受用很大。 概要: DelegatingFilterProxy类不是针对SHIRO出现的,是SHIRO的org.apache.shiro.spring.web.ShiroFilterFactoryBean 使用到了SPRING这个类提供功能。这个类使SPRING容器中的BEAN可以在WEB.XML中配置为FILTER,并生效。这样一来及起到了过滤URL请求作用,又可以访问SPRING容器中其他的BEAN提供的丰富功能。 详情: 使用两种配置比较说明DelegatingFilterProxy配置的区别: 配置一: 在web.xml中增加如下内容: <filter> <filter-name>permissionFilter</filter-name> <filter-class>com.taobao.riskm.filter.PermissionFilter</filter-class> </filter> <filter

SpringBoot 2.x 设置上传文件大小

这一生的挚爱 提交于 2020-03-02 17:08:52
在使用SpringBoot进行文件上传时,出现 文件上传过大的问题。 原因是SpringBoot自带集成的Tomcat限制了文件上传大小。默认为1M. 解决方案如下: 方案一: application.properties配置(yml一样,只是格式有变化) spring.servlet.multipart.max-file-size=500MB spring.servlet.multipart.max-request-size=500MB 方案二: 编写配置类,并通过@Bean标签来加入到IOC容器中管理 package com.xxx.config; import org.springframework.boot.web.servlet.MultipartConfigFactory; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import org.springframework.util.unit.DataSize; import javax.servlet.MultipartConfigElement; @Component public class MultipartConfig { @Bean public

spring注解学习

邮差的信 提交于 2020-03-02 16:39:11
初始化容器时(为了循环依赖 懒加载)和之后获取bean时都会去单例池(一个map结构 beanName:bean)里面去拿对象 aop实现公共处理减少很多冗余,比如公共的异常日志处理 @scope @lazy @scope 设置bean的属性 单实例默认是启动时加载(可以使用@lazy注解实现懒加载),而其他是懒加载 spring可以获取运行环境的各种属性 @Conditional spring可以根据条件得到不同的bean:@Conditional注解的使用 也可以加在类上,即满足条件(加在注解上的条件类的判断方法返回true)这个类中的所有注册bean才会生效 @Repository @Repository不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型 @import @import快速给容器中导入一个组件,默认的id就是组件类的全名(组件即类)@import({User.class,Stu.class}) BeanPostProcessor 后置处理器 BeanPostProcessor也称为Bean后置处理器,它是Spring中定义的接口,在Spring容器的创建过程中(具体为Bean初始化前后)会回调BeanPostProcessor中定义的两个方法:

SSM整合基本架构:第二篇

我们两清 提交于 2020-03-02 15:41:04
一. 项目准备 1.1-需求 实现对订单的查询(根据id查询)和更改 1.2-数据库脚本 CREATE DATABASE IF NOT EXISTS ssm; DROP TABLE IF EXISTS `items`; CREATE TABLE `items` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `name` VARCHAR(20) DEFAULT NULL, `price` FLOAT(10,0) DEFAULT NULL, `pic` VARCHAR(40) DEFAULT NULL, `createTime` DATETIME DEFAULT NULL, `detail` VARCHAR(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8; INSERT INTO `items` VALUES ('1', '华为P30手机', '1000', NULL, '2018-03-13 09:29:30', '国货杠杠的'); SELECT * FROM items; UPDATE items SET NAME='华为Mate30',price=9999,pic=NULL,createTime='2018-03