bean

Spring常用注解

落花浮王杯 提交于 2020-03-30 08:26:11
使用注解来构造IoC容器 用注解来向 Spring 容器注册 Bean 。需要在 applicationContext.xml 中注册 <context:component-scan base-package=”pagkage1[,pagkage2,…,pagkageN]”/> 。 如:在base-package指明一个包 1 <context:component-scan base-package="cn.gacl.java"/> 表明 cn.gacl.java 包及其子包中,如果某个类的头上带有特定的注解【@Component/@Repository/@Service/@Controller】,就会将这个对象作为Bean注册进Spring容器。也可以在<context:component-scan base-package=” ”/>中指定多个包,如: 1 <context:component-scan base-package="cn.gacl.dao.impl,cn.gacl.service.impl,cn.gacl.action"/> 多个包逗号隔开。 1、@Component @Component 是所有受 Spring 管理组件的通用形式, @Component注解可以放在类的头上, @Component不推荐使用。 2、@Controller

Spring DI的配置使用

心不动则不痛 提交于 2020-03-30 08:07:06
1.1.1 依赖和依赖注入 Spring IOC容器的依赖有两层含义:Bean依赖容器和容器注入Bean的依赖资源: a、Bean依赖容器:也就是说Bean要依赖于容器,这里的依赖是指容器负责创建Bean并管理Bean的生命周期,正是由于由容器来控制创建Bean并注入依赖,也就是控制权被反转了,这也正是IOC名字的由来,此处的有依赖是指Bean和容器之间的依赖关系。 b、容器注入Bean的依赖资源:容器负责注入Bean的依赖资源,依赖资源可以是Bean、外部文件、常量数据等,在Java中都反映为对象,并且由容器负责组装Bean之间的依赖关系,此处的依赖是指Bean之间的依赖关系,可以认为是传统类与类之间的“关联”、“聚合”、“组合”关系。 为什么要应用依赖注入,应用依赖注入能给我们带来哪些好处呢? 动态替换Bean依赖对象,程序更灵活 :替换Bean依赖对象,无需修改源文件:应用依赖注入后,由于可以采用配置文件方式实现,从而能随时动态的替换Bean的依赖对象,无需修改java源文件; 更好实践面向接口编程,代码更清晰 :在Bean中只需指定依赖对象的接口,接口定义依赖对象完成的功能,通过容器注入依赖实现; 更好实践优先使用对象组合,而不是类继承 :因为IOC容器采用注入依赖,也就是组合对象,从而更好的实践对象组合。 采用对象组合,Bean的功能可能由几个依赖Bean的功能组合而成

Spring RedisTemplate操作-xml配置(1)

陌路散爱 提交于 2020-03-28 13:37:18
网上没能找到全的spring redistemplate操作例子,故特意化了点时间做了接口调用练习,基本包含了所有redistemplate方法。 该操作例子是个系列,该片为spring xml配置,方便后面做各个数据类型的操作。 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。 <context:annotation-config /> <!-- 把非@Controller注解的类转换为bean --> <context:component-scan base-package="tk.tankpao" /> <cache:annotation-driven /> <context:property-placeholder location="classpath:conf/properties/redis.properties" /> <aop:aspectj-autoproxy proxy-target-class="true"/> <!-- jedis 配置 --> <bean id=

Mybatis 源码解析

喜欢而已 提交于 2020-03-28 12:43:13
一、搭建Spring中使用Mybatis环境 工程结构如下图所示 1、引入依赖 <properties> <spring.version>4.1.2.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.29</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> <dependency>

Spring(3.2.3) - Beans(11): depends-on

核能气质少年 提交于 2020-03-27 21:43:31
大多数情况下,Bean 之间的依赖非常直接:被依赖的 Bean 作为属性。在 XML 配置文件中最常见的就是使用 <ref/> 元素。在一些特殊情况下,Bean 之间的依赖不够直接。比如,某个类的静态初始化块中使用了其他的 Bean,如果其他 Bean 还没实例初始化,将会引发异常。depends-on 属性可以在当前的 Bean 实例初始化之前,强制一个或多个依赖的 Bean 先实例初始化。 <bean id="beanOne" class="ExampleBean" depends-on="manager"/> <bean id="manager" class="ManagerBean" /> 上述的示例中,manager Bean 会先于 beanOne Bean 实例初始化。如果要表达对多个 Bean 的依赖,可以用逗号、空格、分号等分隔符将多个 Bean 的名字隔开。 <bean id="beanOne" class="ExampleBean" depends-on="manager,accountDao"> <property name="manager" ref="manager" /> </bean> <bean id="manager" class="ManagerBean" /> <bean id="accountDao" class="x.y.jdbc

Spring-depends-on

我是研究僧i 提交于 2020-03-27 21:43:02
如果没有一个Bean依赖另一个Bean的static代码块进行初始化的话,我们可以使用depend-on实现,官方文档如下: For most situations, the fact that a bean is a dependency of another is expressed simply by the fact that one bean is set as a property of another. This is typically done with the ref element in the XmlBeanFactory. In a variation of this, sometimes a bean which is aware of the container is simply given the id of its dependency (using a string value or alternately the idref element, which evaluates the same as a string value). The first bean then programmatically asks the container for its dependency. In either case, the dependency

spring的懒加载和depends-on

早过忘川 提交于 2020-03-27 21:42:47
①延迟初始化Bean(惰性初始化Bean)是指不提前初始化Bean,而是只有在真正使用时才创建及初始化Bean. 配置方式很简单只需在<bean>标签上指定 “lazy-init” 属性值为“true”即可延迟初始化Bean。 配置文件: <!--HelloWorld.xml--> <bean id="helloApi" class="cn.javass.spring.chapter2.helloworld.HelloImpl" lazy-init="true"/> ②depends-on是指指定Bean初始化及销毁时的顺序,使用depends-on属性指定的Bean要先初始化完毕后才初始化当前Bean,由于只有"singleton"Bean才能被Spring管理销毁,所以当指定的Bean都是"singleton"时,使用depends-on属性指定的Bean要在指定的Bean之后销毁。 配置代码: <bean id="helloApi" class="com.feng.spring.chapter2.helloworld.HelloApi"> </bean> <bean id="decorator" class="cn.javass.spring.chapter3.bean.HelloApiDecorator" depends-on="helloApi"> <property

spring depends-on

别来无恙 提交于 2020-03-27 21:42:30
  depend-on用来表示一个Bean的实例化依靠另一个Bean先实例化。如果在一个bean A上定义了depend-on B那么就表示:A 实例化前先实例化 B。 这种情况下,A可能根本不需要持有一个B对象。 比如说,你的DAO Bean实例化之前你必须要先实例化Database Bean,DAO Bean并不需要持有一个Database Bean的实例。因为DAO的使用是依赖Database启动的,如果Database Bean不启动,那么DAO即使实例化也是不可用的。这种情况DAO对Database的依赖是不直接的。 除了在DAO上使用构造函数注入Database Bean以外,Spring没有任何依赖注入的关系能够满足上面的情况。但是DAO也许根本不需要Database的实例被注入,因为DAO是通过JDBC访问数据库的,它不需要调用Database 上的任何方法和属性。 在这种情况下你可以使用depends-on来定义在DAO被实例化之前先去实例化Database。你可这样定义: 1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 4 "http://www.springframework.org/dtd/spring-beans

Spring通过名称获取Bean示例

…衆ロ難τιáo~ 提交于 2020-03-27 15:33:46
摘要:本文主要演示通过继承自抽象类ApplicationObjectSupport获取Bean实例。 参考文档: Building a RESTful Web Service Spring在代码中获取bean的几种方式 Spring在代码中获取bean的几种方式 提到共有以下几种方式: 方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法三:继承自抽象类ApplicationObjectSupport 方法四:继承自抽象类WebApplicationObjectSupport 方法五:实现接口ApplicationContextAware 方法六:通过Spring提供的ContextLoader 完整示例代码请参考: https://github.com/sxpujs/spring-cloud-examples/tree/master/rest-service 软件环境: 操作系统:MacOS Catalina 10.15.3 JDK 13.0.2 spring-boot-starter-parent: 2.2.5.RELEASE Maven: 3.6.3 目录: 文件布局 pom.xml Task接口 Task实现类BarTask Task实现类FooTask

Spring框架之Filter应用

泄露秘密 提交于 2020-03-27 07:45:47
在web.xml中进行配置,对所有的URL请求进行过滤,就像"击鼓传花"一样,链式处理。 配置分为两种A和B。 1 在web.xml中增加如下内容: 2 <filter> 3 <filter-name>permissionFilter</filter-name> 4 <filter-class>com.taobao.riskm.filter.PermissionFilter</filter-class> 5 </filter> 6 <filter-mapping> 7 <filter-name>permissionFilter</filter-name> 8 <url-pattern>/*</url-pattern> 9 </filter-mapping> 10 由filter和filter-mapping构成。filter指定过滤器处理类(实现了Filter接口),filter-mapping指定过滤的规则。 B:高级配置 (允许代理注入Spring bean) 1 在web.xml中增加如下内容: 2 <filter> 3 <filter-name>permission</filter-name> 4 <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 5 <init