bean

Spring扩展:替换IOC容器中的Bean组件 -- @Replace注解

痴心易碎 提交于 2020-03-22 02:13:39
1、背景: 工作中是否有这样的场景?一个软件系统会同时有多个不同版本部署,比如我现在做的IM系统,同时又作为公司的技术输出给其他银行,不同的银行有自己的业务实现(比如登陆验证、用户信息查询等); 又或者你的工程里依赖了公司的二方包A,A又依赖了B...这些jar包里的组件都是通过Spring容器来管理的,如果你想改B中某个类的逻辑,但是又不可能让架构组的人帮你打一份特殊版本的B;怎么办呢?是否可以考虑下直接把Spring容器里的某个组件(Bean)替换成你自己实现的Bean? 2、原理&实现 2.1 先看看Spring开放给我们的扩展 Spring框架超强的扩展性毋庸置疑,我们可以通过BeanPostProcessor来简单替换容器中的Bean。 @Component public class MyBeanPostProcessor implements ApplicationContextAware, BeanPostProcessor { private ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this

项目报错:expected at least 1 bean which qualifies as autowire candidate for this depende

匆匆过客 提交于 2020-03-21 21:56:06
web.xml会加载contextConfigLocation配置,以zone为例 找到applicationContext-zone.xml配置文件,会加载mybatis的session工厂 这时候找到DataSource配置文件 会去找数据库连接池 jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称 访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。 tomcat配置jndi有全局配置和局部配置。 接着找jndi的配置文件,配置文件我的是 会发现 环境配置再去tomcat服务器的 配置文件下去找 这时候就能找到目标了 再去 配置下找 实际代码为: <Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" factory="com.alibaba.druid.pool.DruidDataSourceFactory" filters="wall,stat,slf4j" initialSize="5" logAbandoned="true" maxActive="30"

SpringAOP——事务实现细节

一曲冷凌霜 提交于 2020-03-21 18:19:09
承接 上文 ,<tx:annotation-driven />开启声明式事务时,在SpringIOC容器中初始化了4个Bean <!-- 事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 启用声明式事务管理 支持注解@Transaction--> <tx:annotation-driven proxy-target-class="false" transaction-manager="transactionManager"/> TransactionalEventListenerFactory AnnotationTransactionAttributeSource TransactionInterceptor//SpringAOP方法执行时的责任链拦截器 BeanFactoryTransactionAttributeSourceAdvisor//直接用bean创建的Advisor 由于前面没有具体深入了解每个Bean的作用以及实现,所以面试被难住了,补充一下Spring事务的具体实现

Springboot引入fastjson

孤人 提交于 2020-03-21 09:59:58
引入fastjson依赖库    <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.15</version> </dependency>   官方文档说的1.2.10以后,会有两个方法支持HttpMessageconvert,一个是FastJsonHttpMessageConverter,支持4.2以下的版本,一个是FastJsonHttpMessageConverter4支持4.2以上的版本   方法一:启动类继承extends WebMvcConfigurerAdapter,覆盖方法configureMessageConverters     @SpringBootApplication public class ApiCoreApp extends WebMvcConfigurerAdapter {        @Override       public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {          super.configureMessageConverters(converters);        

Thymeleaf+Spring整合

亡梦爱人 提交于 2020-03-21 08:53:25
前言 这个教程介绍了Thymeleaf与Spring框架的集成,特别是SpringMvc框架。 注意Thymeleaf支持同Spring框架的3. 和4. 版本的集成,但是这两个版本的支持是封装在thymeleaf-spring3和thymeleaf-spring4这两个独立的库中,项目中需要根据实际情况分别引用。 样例代码针对的是spring4. ,但一般情况下,spring3. 也可以无缝使用,所需要的仅仅是改变一下引用库。 1 Thymeleaf同Spring的整合 Thymeleaf与Spring进行整合后,可以在SpringMVC应用中完全替代JSP文件。 集成后你将: 就像控制JSP一样,使用SpringMvc的@Controller注解来映射Thymeleaf的模板文件。 在模板中使用SpringEL表达式来替换OGNL 在模板中创建的表单,完全支持Beans和结果的绑定,包括使用PropertyEditor,转换,和验证等。 可以通过Spring来管理国际化文件显示国际化信息。 注意,在使用本教程之前,您应该充分了解Thymeleaf的标准方言。 2 Spring标准方言 为了更加方便,更快捷的集成,Thymeleaf提供了一套能够与Spring正确工作的特有方言。 这套方言基于Thymeleaf标准方言实现,它在类org.thymeleaf.spring

注解实现Bean依赖注入

▼魔方 西西 提交于 2020-03-21 05:29:29
12.2.1 概述 注解实现Bean配置主要用来进行如依赖注入、生命周期回调方法定义等,不能消除XML文件中的Bean元数据定义, 且基于 XML 配置中的依赖注入的数据将覆盖基于注解配置中的依赖注入的数据 。 Spring3的基于注解实现Bean依赖注入支持如下三种注解: Spring 自带依赖注入注解: Spring自带的一套依赖注入注解; JSR-250 注解: Java平台的公共注解,是Java EE 5规范之一,在JDK6中默认包含这些注解,从Spring2.5开始支持。 JSR-330 注解 :Java 依赖注入标准,Java EE 6规范之一,可能在加入到未来JDK版本,从Spring3开始支持; JPA 注解: 用于注入持久化上下文和尸体管理器。 这三种类型的注解在Spring3中都支持,类似于注解事务支持,想要使用这些注解需要在Spring容器中开启注解驱动支持,即使用如下配置方式开启: java代码: Java代码 <beans xmlns= "http://www.springframework.org/schema/beans" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:context= "http://www.springframework.org/schema/context

xfire集成spring构建webservice

让人想犯罪 __ 提交于 2020-03-20 23:52:00
前言:xfire、spring都是比较流行的技术,这里就不再赘述他们各自的优点;本文着重介绍xfire和spring的整合,不会做太深入的探究。 服务端 1. web.xml配置 spring配置部分: contextConfigLocation定义配置文件路径,可以指定全局的配置文件路径。 <!-- spring配置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/xfire-servlet.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- spring配置 --> XFire配置部分: xfire配置1使用spring的DispatcherServlet类来作为xfire的处理类,DispatcherServlet的配置文件名默认为[servletname]-servlet,位于WEB-INF目录下

spring-boot数据访问

一个人想着一个人 提交于 2020-03-20 23:41:56
一、简介 使用springboot可以与jdbc、mybatis、spring data等结合进行数据访问 对于数据访问层,无论是SQL好NoSQL,springBoot默认采用整合Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置。 各种xxxTemplate,xxxRepository来简化我们对数据访问层的操作。对我们来说只需要进行简单的设置即可。 二、整合JDBC 1)、添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-version}</version> <scope>runtime</scope> <

Spring + Spring MVC + MyBatis 整合

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-20 15:16:14
1.所需要 Jar包 ? <!-- Spring3. 0.1 包 --> org.springframework.web- 3.0 . 1 系列 <!-- 公共包 --> slf4j-api- 1.5 . 6 .jar slf4j-log4j12- 1.5 . 6 .jar log4j- 1.2 . 13 .jar commons-logging- 1.1 . 1 .jar asm- 3.1 .jar cglib- 2.2 .jar <!-- mybatis与Spring的整合所需的包 --> mybatis- 3.0 . 5 .jar aopalliance- 1.0 .jar mybatis-spring- 1.0 . 1 .jar mybatis-generator-core- 1.3 . 1 .jar(mybatis代码生成器包) <!-- jdbc driven --> mysql-connector-java- 3.1 . 6 -bin.jar <!-- JSR验证-Hibernate validate 4.1 --> hibernate-validator- 4.1 . 0 .Final.jar validation-api- 1.0 . 0 .GA.jar <!-- Spring Json 支持包 --> jackson-all- 1.8 . 1 .jar 2.

Redis(六)-- SpringMVC整合Redis

爱⌒轻易说出口 提交于 2020-03-20 08:03:56
一、pom.xml 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>com.xbq.demo</groupId> 5 <artifactId>SpringRedisDemo</artifactId> 6 <packaging>war</packaging> 7 <version>0.0.1-SNAPSHOT</version> 8 <name>SpringRedisDemo Maven Webapp</name> 9 <url>http://maven.apache.org</url> 10 11 <!-- Spring版本号 --> 12 <properties> 13 <org.springframework.version>4.2.3.RELEASE</org.springframework.version> 14 <