spring高级
文章平均质量分 97
我会努力变强的
这个作者很懒,什么都没留下…
展开
-
Spring高级之注解@PropertySource详解(超详细)
定义/作用@PropertySource注解用于指定资源文件读取的位置,它不仅能读取properties文件,也能读取xml文件,并且通过YAML解析器,配合自定义PropertySourceFactory实现解析YAML文件。源码://只能作用在类上@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Repeatable(PropertySources.class)public @interface原创 2020-06-06 16:36:49 · 54149 阅读 · 4 评论 -
Spring高级之注解@Import注解、ImportSelector、ImportBeanDefinitionRegistrar详解(超详细)
定义/作用@Import注解只能作用在类上,一种使用场景是在spring注解驱动开发环境下与配置类配合使用的,其作用是引用其他配置类。使得我们可以和早起的基于XML配置文件开发那样。使用不同的配置类配置不同的内容,比如Mysql数据源配置用一个配置类。Redis数据源配置用一个配置类等。然后使用在注解在一个主配置类中引入这些从配置类,使得配置更加清晰。被引入的类可以不使用@Configuration、@Component注解。另一种使用 场景是该注解也是一种注册bean的方案。可以在配置类中使用Impo原创 2020-06-06 12:35:43 · 3504 阅读 · 1 评论 -
Spring高级之注解@Bean详解(超详细)
定义/作用当我们要使用第三方类实现组件注册到IOC容器时,例如第三方数据库连接池等,我们无法修改他们的代码,所以我们不能通过@Component及其衍生注解来进行组件定义。这是,可以通过@Bean注解把第三方组件注册到IOC容器中。源码://能够作用在方法和注解上,作用在方法上和作用在注解上的用处不同,通常作用在方法上。@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNT原创 2020-06-05 21:41:30 · 5029 阅读 · 0 评论 -
Spring高级之注解@lazy详解(超详细)
定义/作用用于指定单例bean实例化的时机,在没有指定此注解时,单例会在容器初始化时就被创建。而当使用此注解后,单例对象的创建时机会在该bean在被第一次使用时创建,并且只创建一次。第二次及以后获取使用就不再创建。在实际开发场景中,并不是所有bean都要一开始就被创建的,有些可以等到使用时才创建。此时就可以使用该注解实现。此注解只对单例bean有用,原型bean时此注解不起作用。源码://可以作用在类上、方法上、构造器上、方法参数上、成员变量中。@Target({ElementType.TYPE原创 2020-06-05 18:08:41 · 17458 阅读 · 8 评论 -
Spring高级之注解@DependsOn详解(超详细)
定义/作用@DependsOn注解可以定义在类和方法上,意思是我这个组件要依赖于另一个组件,也就是说被依赖的组件会比该组件先注册到IOC容器中。使用场景:需要用到观察者模式的情况下通常都需要用到该注解,观察者模式(详细可查看相关文章)有三要输,观察者、事件源、事件,机制是观察者会监听数据源的某些时间,当事件源触发该事件后,观察者就会知道进行相应措施。比如老师是观察者,学生是事件源,学生迟到是事件,老师观察学生是否迟到,每当学生迟到,老师就会发现,并处罚该学生。这类场景一般需要观察者要比事件源先创建原创 2020-06-04 20:58:53 · 63750 阅读 · 1 评论 -
Spring高级之注解@ComponentScan详解(超详细)
定义/作用@ComponentScan注解用于实现spring主键的注解扫描,会扫描特定包内的类上的注解。源码(对属性进行一些简介,会在后文中详细讲解每个属性):@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) //只能作用在类上,一般作用在配置类上。@Documented@Repeatable(ComponentScans.class)public @interface ComponentScan { @A原创 2020-06-04 18:57:09 · 10075 阅读 · 1 评论 -
Spring高级之Spring事务详解(用法、传播行为、隔离级别、只读事务、事务条件)
事务概述:这里仅对数据库事务进行一个概述,要详细的可以查询相关文章在JavaEE企业级开发的应用领域,为确保数据的完整性和一致性,必须引入数据库事务的概念,所以事务管理是企业级应用程序开发中必不可少的技术。事务就是一组由于逻辑上紧密关联而合并成一个整体的多个数据库操作,这些操作要么都执行,要么都不执行。事务四大特性(ACID)原子性:事务的原子性表现为一个事务中设计多个操作在逻辑上缺一不可,事务的原子性要求事务中的所有操作要么全都执行,要么全都不执行。一致性:指的是数据的一致,具体是指,所原创 2020-05-31 15:56:43 · 502 阅读 · 0 评论 -
spring高级之AOP详解
前言这是之前开始学spring的时候的笔记,现在添加了一些理解,然后把他搬到博客上来。动态代理模式演示:这里仅是动态代理的演示,要查看详细的可以查阅相关博文。动态代理的本质就是增强对象方法,在不修改目标类的情况动态生成一个代理类和代理对象,然后在目标对象的方法执行前、后、等地方可以执行一点逻辑。比如日志等。建议要理解Spring的AOP之前要理解好动态代理,因为AOP底层是动态代理。以下是基于jdk的动态代理写的demo,jdk的动态代理只能代理接口,要代理类的话可以使用cglib动态代理。原创 2020-05-29 21:26:19 · 399 阅读 · 0 评论 -
Spring高级应用之bean的生命周期
简介:在spring世界中,一切皆为bean,spring是面向bean编程的,bean也可以称为组件,是一个个java对象,多个组件间协调工作完成复杂的业务功能。所以理解bean的生命周期,方便在每个时期可以执行一些特定的操作是十分重要的。这里的bean指的是单例bean,原型bean一旦从容器中获取出去生命周期就不归容器管理了。默认的生命周期:spring中bean有五个默认的生命周期(顺序由上到下):实例创建阶段:就是使用构造器进行实例创建的阶段。依赖注入阶段:也就是属性赋值阶段。初原创 2020-05-27 21:24:59 · 237 阅读 · 0 评论