写在前面 在之前的Spring版本中,我们只能通过写XML配置文件来定义我们的Bean,XML配置不仅繁琐,而且很容易出错,稍有不慎就会导致编写的应用程序各种报错,排查半天,发现是XML文件配置不对!另外,每个项目编写大量的XML文件来配置Spring,也大大增加了项目维护的复杂度,往往很多个项目的Spring XML文件的配置大部分是相同的,只有很少量的配置不同,这也造成了配置文件上的冗余. 项目工程源码已经提交到GitHub:https://github.com/sunshinelyz/sp…
xml配置方式 首先我们创建一个实体类Person public class Person { private String name; private Integer age; private String nickName; // 省略getter and setter ,tostring ,Constructor 1} 以往,我们在spring的配置文件中注册一个bean,采用以下写法: <?xml version="1.0" encoding="UTF-8&qu…
2.组件注册-@Configuration&@Bean给容器中注册组件 2.1 创建maven项目 spring-annotation pom.xml文件添加 spring-context 依赖 <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId>…
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件,那么.xml文件又会非常多.总之这将导致配置文件的可读性与可维护性变得很低.2.在开发中在.java文件和.xml文件之间不断切换,是一件麻烦的事,同时这种思维上的不连贯也会降低开发的效率.为了解决这两个问题,Spring引入了注解,通过"@XXX"的方式,让注解与Java Bean紧密…
Spring注解开发 浅尝Spring注解开发,基于Spring 4.3.12 包含自定义扫描组件.自定义导入组件.手动注册组件.自动注入方法和参数.使用Spring容器底层组件等 配置 @Configuration配置类 告诉Spring这是一个配置类,代替以前的xml文件,配置类=配置文件 @Configuration public class MainConfig { //给容器中注册一个Bean;类型为返回值的类型,id默认是用方法名作为id @Bean("person") p…
1.包扫描+组件标注注解 使用到的注解如下,主要针对自己写的类 @Controller @Service @Repository @Component @ComponentScan 参考 spring注解开发:ComponentScan组件扫描 2.使用bean注解 主要使用场景:导入第三方包里面的组件,使用到的注解: @Bean 参考:spring注解开发:Configuration&Bean 3.使用@Import注解 使用方式:@Import(要导入到容器中的组件):容器中就会自动注册这个…
目录 1. @Configuration 2. @ComponentScan excludeFilters includeFilters 使用自定义TypeFilter 3. @Bean @Scope @Lazy 4. Conditional 5. @Import 6. 通过实现FactoryBean注册组件 小结 本文github位置:https://github.com/WillVi/Spring-Annotation/ 1. @Configuration ​ @Configuration…
给容器中注册组件的方式 1. 组件注解标注 + 包扫描(适用于自己写的类) //控制层组件 @Controller public class PersonController { } //业务逻辑层组件 @Service public class PersonServic { } //持久层组件 @Repository public class PersonDao { } //其他组件 @Component public class Person { } 包扫描(注解或者xml的方式) 1.使用…
写在前面 在前面的文章中,我们学习了如何使用@Import注解向Spring容器中导入bean,可以使用@Import注解快速向容器中导入bean,小伙伴们可以参见<[Spring注解驱动开发]使用@Import注解给容器中快速导入一个组件>.可以在@Import注解中使用ImportSelector接口导入bean,小伙伴们可以参见<[Spring注解驱动开发]在@Import注解中使用ImportSelector接口导入bean>一文.今天,我们就来说说,如何在@Import注…
写在前面 当bean是单实例,并且没有设置懒加载时,Spring容器启动时,就会实例化bean,并将bean注册到IOC容器中,以后每次从IOC容器中获取bean时,直接返回IOC容器中的bean,不再创建新的bean. 如果bean是单实例,并且使用@Lazy注解设置了懒加载,则Spring容器启动时,不会实例化bean,也不会将bean注册到IOC容器中,只有第一次获取bean的时候,才会实例化bean,并且将bean注册到IOC容器中. 如果bean是多实例,则Spring容器启动时,不会…
写在前面 在前面的文章中,我们知道可以通过多种方式向Spring容器中注册bean.可以使用@Configuration结合@Bean向Spring容器中注册bean:可以按照条件向Spring容器中注册bean:可以使用@Import向容器中快速导入bean对象:可以在@Import中使用ImportBeanDefinitionRegistrar向容器中注册bean. 项目工程源码已经提交到GitHub:https://github.com/sunshinelyz/spring-annotat…
自动装配: spring利用依赖注入和DI完成对IOC容器中各个组件的依赖关系赋值.自动装配的优点有: 自动装配可以大大地减少属性和构造器参数的指派. 自动装配也可以在解析对象时更新配置. 自动装配的方式有很多,其中包含spring的注解以及java自带的注解下面来看一看这些自动装配方式的区别 1.@Autowired(Spring规范) @Autowired 在Spring2.5引入,可以对成员变量.方法和构造函数进行标注,来完成自动装配的工作. 无需再通过传统的在bean的xml文件中进行b…
Spring注解开发 浅尝Spring注解开发,基于Spring 4.3.12 包含Bean生命周期.自定义初始化方法.Debug BeanPostProcessor执行过程及在Spring底层中的应用 浅尝Spring注解开发_自定义注册组件.属性赋值.自动装配 浅尝Spring注解开发_Bean生命周期及执行过程 Bean生命周期 了解Bean的生命周期,就可以在Bean声明周期的不同阶段进行自定义的操作,满足更复杂的需求.简单的将Bean生命周期分为三个阶段:Bean创建.初始化.销毁 对…
浅尝Spring注解开发_AOP原理及完整过程分析(源码) 浅尝Spring注解开发,基于Spring 4.3.12 分析AOP执行过程及源码,包含AOP注解使用.AOP原理.分析AnnotationAwareAspectJAutoProxyCreator.AOP代理.拦截器.链式调用 以初学者的角度跟着雷丰阳的视频走完AOP整个过程,设计很巧妙.补充了自己的理解,为了流程连续性,所以全放在放在一篇里,如有错误请多多指教. 浅尝Spring注解开发_自定义注册组件.属性赋值.自动装配 浅尝Spr…
浅尝Spring注解开发_Spring容器创建概述 浅尝Spring注解开发,基于Spring 4.3.12 概述Spring容器创建的过程,包括12个方法的执行 浅尝Spring注解开发_自定义注册组件.属性赋值.自动装配 浅尝Spring注解开发_Bean生命周期及执行过程 浅尝Spring注解开发_AOP原理及完整过程分析(源码) 浅尝Spring注解开发_声明式事务及原理 浅尝Spring注解开发_简单理解BeanFactoryPostProcessor.BeanDefinitionRe…
1.通过xml定义 <bean class=""> <property name="" value=""></property> </bean> 2.通过注解 这种方式比较常见,通常用@Controller.@Component.@Service等等 3.通过@Bean注解 比如下面的代码往容器中注册一个Person对象 @Bean public Person person(){ return ne…
本文github位置:https://github.com/WillVi/Spring-Annotation/ 往期文章:Spring注解开发-全面解析常用注解使用方法之组件注册 bean生命周期 ​ 创建------>初始化------->销毁.容器统一管理bean的生命周期,我们也可以自定义初始化和销毁方法:容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法. 流程: 构造(对象创建) 单实例:在容器启动的时候创建对象 多实例:在每次获取的时候创建对象 BeanPos…
1. 环境搭建与测试 1)导入相关依赖 数据源.数据库驱动.Spring-jdbc模块 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.12.RELEASE</version> </dependency> <dependency> <gro…
一:AOP基本使用 AOP指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式: 步骤一:导入aop模块:Spring AOP:(spring-aspects) <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.12.RELEASE</version&…
1. @Configuration, @Bean @Configuration该注解就是用来告诉spring这是配置类 @Bean该注解是用来注册一个bean.类型是返回值的类型,ID默认是用方法名作为ID的:可以在注解中指定ID,@Bean("person") ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class); //MainConfig.cl…
1.@Bean 导入第三方的类或包的组件 2.包扫描+组件的标注注解(@ComponentScan: @Controller,@service,@Reponsitory,@Componet), 自己写的类 3.@Import[可以快速给容器中导入一个或者多个组件]        1@Import(要导入到容器中的组件):容器中就会自动注册这个组件,id默认是全类名 @Configuration @Import(value = {Student.class,Teacher.class}) publ…
注解开发 --- AOP AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,横向重复,纵向抽取.详细的AOP介绍请看这里,本篇主要是讨论AOP在spring注解开发中的运用. AOP的使用 1.导入aop模块(spring-aspects) <dependency> <groupId>org.springframework</groupId> <artifactId>…
浅尝Spring注解开发_Servlet 3.0 与 SpringMVC 浅尝Spring注解开发,基于Spring 4.3.12 Servlet3.0新增了注解支持.异步处理,可以省去web.xml文件,异步处理更高效. 浅尝Spring注解开发_自定义注册组件.属性赋值.自动装配 浅尝Spring注解开发_Bean生命周期及执行过程 浅尝Spring注解开发_AOP原理及完整过程分析(源码) 浅尝Spring注解开发_声明式事务及原理 浅尝Spring注解开发_简单理解BeanFactory…
Spring框架的核心功能IoC(Inversion of Control),也就是通过Spring容器进行对象的管理,以及对象之间组合关系的映射.通常情况下我们会在xml配置文件中进行action,service,dao等层的声明,然后并告知框架我们想要的注入方式,然后在类中声明要组合类的get,set方法.而通过Spring框架中注解的运用也就主要是解决这类问题的.而框架中另一个核心知识AOP,一种面向横切面的方法编程,在程序中一般都是进行一次设置就可以的,所以都还放在配置文件中.例如声明式…
一.spring注解开发中常用注解以及简单配置 1.为什么要用注解开发:spring的核心是Ioc容器和Aop,对于传统的Ioc编程来说我们需要在spring的配置文件中邪大量的bean来向spring容器中注入bean对象, 然而,通过注解编程可以缩短我们开发的时间,简化程序员的代码编写. 2.如何开启注解开发:最常用的方法是使用<mvc:annotation-driven/>来开启注解编程(用一个标签配置了spring注解编程的映射器和适配器,同时配置了许多的参数) 3.如何将有注解的be…
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7190925.html 一.统计信息管理   二.Spring注解开发 1.service为例子 @Service("customerService") @Transactional(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=false) public class…
前面我们已经介绍了几种为容器中添加组件的方法,今天一起学习通过FactoryBean添加组件的方法. 首先我们准备一个类,也就是我们需要注册进spring的ioc容器中的类 类Color: // 不必关心该类的具体代码实现,我们只是要把它注册进容器中即可 public class Color { private Car car; public Car getCar() { return car; } public void setCar(Car car) { this.car = car; }…
目录 环境搭建 spring给容器中注入组件 1.包扫描+组件标注注解(@Controller/@Service/@Repository/@Component)适用于把自己写的类加入组件(默认ID类名首字母小写) 此种方式比较简单就不贴代码了 2.@Bean[导入的第三方包里面的组件] (注意一定要在这个配置类上加上@Configuration) 3.@Import[快速给容器中导入一个组件] 4.使用Spring提供的 FactoryBean(工厂Bean); 1).默认获取到的是工厂bean…
[spring以及第三方jar的案例]在spring中的aop相关配置的标签,线程池相关配置的标签,都是基于该种方式实现的.包括dubbo的配置标签都是基于该方式实现的.[一]原理 ===>spring在解析xml标签,一旦不是以<bean>开头的元素,就会走org.springframework.beans.factory.xml.BeanDefinitionParserDelegate的parseCustomElement(Element ele)方法解析自定义的标签 ===>…
1.@Import注册组件 @Import主要功能是通过导入的方式实现把实例加入springIOC容器中, /** * 给容器注册组件 * 1.包扫描+组件标注注解(@Controller,@Service,@Repository,@Component) * 2.@Bean(导入第三方包里的组件) * 3.@Import[快速给容器导入组件] * 1)@Import(要导入容器的组件),容器中就会自动注册这个组件 * 2)ImportSelector:返回需要导入的组件的全类名数组 * 3)Im…