
spring
spring
A__17
这个作者很懒,什么都没留下…
展开
-
spring是如何解决创建bean时,bean之间的循环依赖呢?
前言构造器注入循环依赖:示例:@Servicepublic class A { public A(B b) { }}@Servicepublic class B { public B(A a) { }}说明:构造器注入构成的循环依赖spring是不能解决的。field属性注入(setter方法注入)循环依赖示例@Servicepublic class A { @Autowired private B b;原创 2015-09-23 16:52:39 · 702 阅读 · 0 评论 -
java中的Bean Validation
概念:java中的Bean Validation是一个数据验证的规范。说明:Hibernate Validator是Bean Validation的一个具体实现。举例:在springMVC中使用Hibernate Validator 1)maven依赖: <dependency> <groupId>javax.validation</group...原创 2017-09-01 21:44:11 · 973 阅读 · 0 评论 -
spring中的事务
1)配置文件: 1)注解的形式: spring + mybatis: 说明:mybatis会自动参与到spring事务的管理中,无需额外配置,只要org.mybatis.spring.SqlSessionFactoryBean引用的数据源与DataSourceTransactionManager引用的数据源一致即可,否则事务管理不起作用。 <!-- 定义事务管理器...原创 2017-08-03 01:07:33 · 955 阅读 · 0 评论 -
Spring中,给静态变量初始化的问题
方案一:推荐使用。 /** * 使用:ServiceBeanFactory.getUserService().getUserByName("jack"); */ public class ServiceBeanFactory { private static IUserService userService; @Autowired public void setU...原创 2017-04-28 11:42:59 · 8136 阅读 · 0 评论 -
Spring中的FactoryBean
package org.springframework.beans.factory;/** * 如果一个类实现了该接口,则这个类是一个具体工厂类,这个具体工厂类是用来生成类型为T的bean。 * * If a bean implements this interface, it is used as a factory for an object to expose, not dire...原创 2015-11-02 18:38:17 · 549 阅读 · 0 评论 -
Spring中的InitializingBean
package org.springframework.beans.factory;/** * 如果一个类实现了该接口,则该类在属性全部初始化后,会立即调用afterPropertiesSet方法。使用场景:我们需要自定义某个类的初始化方法。 * * Interface to be implemented by beans that need to react once all thei...原创 2015-11-02 18:37:16 · 762 阅读 · 0 评论 -
Spring中的@Scope注解
Spring中的@Scope注解:源码: @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Scope { /** * Specifies the scope to use for the anno...原创 2018-03-29 21:16:17 · 2003 阅读 · 0 评论 -
Spring源码分析
1)idea下debug的时候不会报超时错误。2)eclipse下debug的时候可能会报tomcat启动超时错误: 错误信息:Server apache-tomcat-8.0.33 at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the t...原创 2018-05-11 21:02:20 · 301 阅读 · 0 评论 -
代理模式--静态代理VS动态代理
代理模式: 作用:为目标对象提供一个代理对象以控制对目标对象的访问。 说明:代理对象存在的价值:主要用于拦截对真实业务对象(目标对象)的访问 应用:拦截器等静态代理: 代理类和目标类必须实现相同的接口或者是继承相同父类。 静态代理模式的缺点: 1,如果一个系统中有100个目标(被代理)对象,则要创建100个代理对象 2,如果一个目标对象中有很多方法需要事务,则代理对象的很多方...原创 2015-09-24 14:48:15 · 826 阅读 · 0 评论 -
SpringMVC中的注解
springMVC中的注解@RequestMapping 概念:处理请求地址映射(将请求映射到Controller的方法上)。 说明:用在类或方法上 用在类上: 表示该方法是一个可以响应请求的方法。 用在方法上:表示类中所有响应请求的方法都是以该地址作为父路径。 属性: value: 指定请求的url method:指定请求的method类型(GET、POST...原创 2016-12-29 17:20:07 · 727 阅读 · 0 评论 -
SpringMVC中的处理器(Controller) & 处理器映射(handlerMapping)
SpringMVC中的处理器: 1)命令处理器(CommandController): 配置文件: 处理器: public class MyCommandController extends AbstractCommandController { // 在默认的构造方法中注册模型 public MyCommandController() {原创 2016-12-11 01:49:40 · 1960 阅读 · 0 评论 -
spring容器创建对象的时机
spring容器创建对象的时机 1,在单例的情况下: 1.1 在默认的情况下,启动spring容器时创建对象 1.2 在spring的配置文件bean中有一个属性lazy-init="default/true/false" 1)如果lazy-init为"default/false"在启动spring容器时创建对象 优点:可以在启动spring容器的时候,检查spring容器原创 2015-09-23 16:07:08 · 1247 阅读 · 0 评论 -
Spring中的IoC
Spring中的IoC: 1)概念:把对象的创建、初始化、销毁等工作交给spring容器来做。由spring容器控制对象的生命周期。 2)目的:为了解决多个对象之间的依赖关系。 3)原理: 1)通过配置文件(或注解)的方式来描述bean与bean之间的依赖关系。 2)通过动态代理和java的反射机制来实例化bean,同时建立bean之间的依赖关系。 4)spring容器创建...原创 2015-09-23 16:05:45 · 5669 阅读 · 0 评论 -
Spring中注解的使用
Spring中注解的使用 1)依赖注入:标注在字段或属性的setter方法上 1)@Autowired 根据类型查找 2)@Autowired + @Qualifier 根据名字(id)查找 3)@Resource 按名称查找,当找不到与名称匹配的bean时再按类型查找 说明: 1>@Resource注解是JSR-250标准注解,不是sp...原创 2015-09-23 16:19:05 · 805 阅读 · 0 评论 -
Spring中的容器
Spring中的容器: BeanFactory 全名:org.springframework.beans.factory.BeanFactory 概念:BeanFactory是Spring框架最核心的接口,它提供了IoC机制,实现了依赖注入的功能, 说明:BeanFactory负责管理bean的生命周期(bean的加载、实例化等)、维护bean之间的依赖关系,一般...原创 2015-09-23 16:10:13 · 1178 阅读 · 0 评论 -
SpringMVC的工作原理
SpringMVC的工作原理: 1)客户端向服务器发出一个http请求,web服务器对请求进行解析,如果在DispatcherServlet的请求映射路径(在web.xml中配置)中匹配到了该请求,那么web服务器就会把该请求转发给DispatcherServlet进行处理。 2)DipatcherServlet接收到这个请求后,将根据请求的信息(URL、请求方式、请求参数等)和HandlerMapping的配置找到处理请求的控制器。 3)控制器对数据处理完成后,将返回一个ModelAndView对象原创 2016-12-22 02:01:20 · 621 阅读 · 0 评论 -
Spring中的AOP
aop: 原理:通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能。 概念: 1,切面(Aspect) 事务、日志、权限等都是切面,切面是类 2,通知(Advice) 切面中的方法就是通知,通知是方法 1)前置通知:在目标方法执行之前执行。无论目标方法是否抛出异常,都执行,因为在执行前置通知的时候,目标方法还没有执行,还没有遇原创 2015-09-23 16:34:13 · 782 阅读 · 0 评论 -
利用Spring的AbstractRoutingDataSource来解决多数据源的问题,eg:数据库的读写分离
利用Spring的AbstractRoutingDataSource来解决多数据源的问题,eg:数据库的读写分离步骤: 1)在配置文件中定义多个datasource。 2)自定义一个DBContext类,并在其中封装一个静态的ThreadLocal变量(用来存储当前线程应该访问哪个数据库),并实现访问静态ThreadLocal变量的静态方法(设值和取值)。 3)自定义一个继承了Abstr原创 2017-06-27 23:48:32 · 814 阅读 · 0 评论 -
使用Spring提供的BeanUtils.copyProperties()方法报错:Could not copy property 'xxx' from source to target
使用Spring提供的BeanUtils.copyProperties()方法报错:Could not copy property 'xxx' from source to target; nested exception is java.lang.IllegalArgumentException 调用的方法:org.springframework.beans.BeanUtils.copyProperties(Object source, Object target) 报错: org.spri原创 2017-07-09 20:10:20 · 13634 阅读 · 2 评论 -
quartz与spring的整合使用
maven依赖: org.quartz-scheduler quartz 2.0.2 Spring配置文件applicationContext-quartz.xml: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLS原创 2017-08-21 23:20:41 · 360 阅读 · 0 评论 -
Spring中的数据库操作--使用JdbcTemplate
Spring中的数据库操作 静态代码+动态变量 = jdbc编程 静态代码构成了模板,而动态变量则是需要传入的参数 JdbcTemplate 1)简化了我们对JDBC的操作:完成了SQL语句的创建和执行、资源的创建和释放的工作 总结:节省代码,不管连接、不管事务、不管异常、不管关闭 2)仅需要传递DataSource就可以把它实例化 3)JdbcTemplate只需要创原创 2015-09-23 16:14:01 · 2075 阅读 · 1 评论