
Spring注解驱动开发
阿弥陀佛僧
知幻即离,不假方便;离幻即觉,亦无渐次。
展开
-
Spring注解驱动开发——指定配置类和注册Bean
1、通过注解指定配置类和注册Bean@Configurationpublic class MainConfig { @Bean public Person person(){ return new Person("lisi",12); }}@Configuration注解可以不加,创建ApplicationContext对象时传入的类即可被认...原创 2019-03-20 16:07:29 · 1741 阅读 · 0 评论 -
Spring注解驱动开发——声明式事物
声明式事物:环境搭建:1、加入依赖:数据源、数据库驱动、spring-jdbc<dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version></dep...原创 2019-03-20 16:07:43 · 337 阅读 · 0 评论 -
Spring注解驱动开发——ApplicationListener(事件监听)
ApplicationListener:应用监听器,是一个抽象类,spring提供的基于事件驱动开发的功能,通过监听容器中发布的一些事件,事件发生则触发监听器的回调来完成事件驱动模型开发@Componentpublic class MyApplicationListener implements ApplicationListener<ApplicationEvent>{ ...原创 2019-03-20 16:06:36 · 2549 阅读 · 0 评论 -
Spring注解驱动开发——自动装配(2)
@Autowired不止可以标注在属性上,也可以标注在构造器、方法、参数上标注在方法上:@Componentpublic class Student { private Bike bike; public Bike getBike() { return bike; } @Autowired public void setBike(Bike bike) { thi...原创 2019-03-20 16:07:00 · 209 阅读 · 0 评论 -
Spring注解驱动开发——Aware接口
Spring的Aware接口:在Spring中有个Aware接口public interface Aware {}Spring中很多接口继承于该接口,该接口的子接口可以为Spring容器中的组件提供Spring自带的一些组件,比如ApplicationContext、BeanFactory等,只需要实现XxxAware接口即可,比如容器中的组件通过实现ApplicationConte...原创 2019-03-20 16:08:20 · 476 阅读 · 0 评论 -
Spring注解驱动开发——Profile环境切换
Profile:Spring提供的可以根据当前环境(开发、测试、生产),动态的激活和切换一系列的组件的功能,可以使用@Profile注解实现,比如数据源根据环境的切换。@Profile注解用于指定组件在哪个环境下会注册到IOC容器中,若不加该注解则在所有环境下都会注册到容器中:@PropertySource("classpath:/config.properties")@Configura...原创 2019-03-20 16:08:06 · 385 阅读 · 0 评论 -
Spring注解驱动开发——声明式事务原理
声明式事务环境搭建:1、导入相关依赖 数据源、数据库驱动、Spring-jdbc模块 2、配置数据源、JdbcTemplate(Spring提供的简化数据库操作的工具) 3、给方法上标注 @Transactional 表示当前方法是一个事务方法 4、 配置类加注解@EnableTransactionManagement :开启基于注解的事务管...原创 2019-03-20 16:15:16 · 746 阅读 · 0 评论 -
Spring注解驱动开发——BeanFactoryPostProcessor
BeanFactoryPostProcessor:beanFactory的后置处理器,在BeanFactory标准初始化之后调用,来定制和修改BeanFactory的内容,此时所有的bean定义已经保存并加载到beanFactory,但是bean的实例还未创建,beanFactory实际上就是spring的容器public void refresh() throws BeansExcepti...原创 2019-03-20 16:07:37 · 537 阅读 · 0 评论 -
Spring注解驱动开发——BeanDefinitionRegistryPostProcessor
BeanDefinitionRegistryPostProcessor:是BeanFactoryPostProcessor的子接口,bean定义注册中心的后置处理器,定义了一个postProcessBeanDefinitionRegistry方法,允许在IOC容器标准初始化之后修改bean定义注册中心,在所有合法的bean定义将要被加载但还没有被实例化之前调用该方法,它的执行在BeanFactor...原创 2019-03-20 16:15:21 · 712 阅读 · 0 评论 -
Spring注解驱动开发——BeanFactory的准备工作
一、BeanFactory预准备Spring容器的refresh()【创建刷新】:public AnnotationConfigApplicationContext(Class<?>... annotatedClasses) { this(); register(annotatedClasses); refresh();}1、prepareRefresh()刷新前...原创 2019-03-20 16:06:29 · 383 阅读 · 0 评论 -
Spring注解驱动开发——Bean的创建
一、finishBeanFactoryInitialization(beanFactory);初始化所有剩下的单实例bean1、beanFactory.preInstantiateSingletons();1)、获取容器中的所有Bean,依次进行初始化和创建对象2)、获取Bean的定义信息:RootBeanDefinition 判断当Bean是单实例的,不是抽象的,不是懒加载的时候...原创 2019-03-20 16:15:26 · 347 阅读 · 0 评论 -
Spring注解驱动开发——AOP原理笔记
AOP:动态代理,指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式1、导入aop模块;Spring AOP:(spring-aspects)2、定义一个业务逻辑类(MathCalculator);在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、方法出现异常,xxx)3、定义一个日志切面类(LogAspects):切面类里面的方法需要动态感知MathCal...原创 2019-03-20 16:15:06 · 439 阅读 · 0 评论 -
Spring注解驱动开发——设置Bean属性和动态注册Bean
1、@Scope设置组件作用域@Configurationpublic class MainConfigA { @Bean("person") @Scope("singleton") public Person person(){ return new Person("张三丰",25); }}public class JuitTest...原创 2019-03-20 16:07:21 · 1718 阅读 · 0 评论 -
Spring注解驱动开发——导入组件
1、@Import快速导入一个组件容器中注册组件的方式: ①包扫描+组件注解(@Controller、@Service、@Repository、@Component) ②@Bean ③@Import:值是一个Class[],容器会注册被导入的类,可用来导入第三方的类对象,或者一个包下仅有极少数的类需要被纳入IOC容器管理时,导入对象的id默认为组件的全类名@...原创 2019-03-20 16:14:26 · 281 阅读 · 0 评论 -
Spring注解驱动开发——FactoryBean接口
使用Spring提供的工厂Bean(FactoryBean)FactoryBean是一个接口,子类需实现其三个方法: getObject():获取对象,必须重写 getObjectType():获取对象类型,必须重写 isSingleton():是否单例,可以重写public class MyPersonFactoryBean...原创 2019-03-20 16:14:35 · 620 阅读 · 0 评论 -
Spring注解驱动开发——AOP面向切面
AOP:在程序运行期间,动态的将某段代码切入到指定方法运行时的指定时机运行,其实就是动态代理。Spring提供了对AOP很好的支持,使用时需要导入spring-aspects包。业务逻辑类:要求在业务方法运行时打印日志public class MathCalculator { public int div(int i,int j){ return i/j; }}切面类...原创 2019-03-20 16:08:01 · 299 阅读 · 0 评论 -
Spring注解驱动开发——AOP的原理
AOP的原理:@EnableAspectJAutoProxy注解会启用Spring的AOP,那么@EnableAspectJAutoProxy是什么呢?@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AspectJAutoProxyRegistrar.class)public...原创 2019-03-20 16:07:56 · 338 阅读 · 0 评论 -
Spring注解驱动开发——bean的生命周期
Bean的生命周期:bean创建->初始化->销毁的过程,由容器来管理,容器会在bean进行到当前生命周期时调用我们自定义的初始化和销毁方法1、通过@Bean的属性指定初始化和销毁方法:这两个方法必须是无入参的public class Car { public Car(){ System.out.println("构造"); } public void ini...原创 2019-03-20 16:14:42 · 278 阅读 · 0 评论 -
Spring注解驱动开发——bean的后置处理器
BeanPostProcessor:是一个接口,bean的后置处理器(实际是在bean的初始化前后执行操作)public class MyBeanPostProcessor implements BeanPostProcessor{ /** * bean是容器调用构造器创建的实例 * beanName是实例的id * 在所有初始化方法之前调用 */ public Obj...原创 2019-03-20 16:14:48 · 2801 阅读 · 0 评论 -
Spring注解驱动开发——AOP原理源码解析
AOP的底层原理:1、创建AnnotationAwareAspectJAutoProxyCreator在容器启动时会注册配置类,并调用refresh()方法,创建容器中的所有bean并装配bean的属性和功能等public AnnotationConfigApplicationContext(Class<?>... annotatedClasses) { this();...原创 2019-03-20 16:07:48 · 207 阅读 · 0 评论 -
Spring注解驱动开发——自动装配(1)
自动装配:Spring利用依赖注入(DI),完成对IOC容器中各个组件的依赖赋值1、@Autowired: 默认先按照类型去容器中找相应的组件(applicationContext.getBean(Xxx.class)),若只找到一个则进行装配,若找到多个则再按照属性的名称作为id找对应的组件(applicationContext.getBean("beanId"));另外可使用@Q...原创 2019-03-20 16:07:15 · 327 阅读 · 0 评论 -
Spring注解驱动开发——给bean的属性复制
属性赋值:Bean的属性上使用@Value注解:必须是由容器调用构造器创建的bean这些@Value中的属性值才会被注入,自己显示写了new方法的@Value属性就不起作用了,因为自己写了new方法则实例不是由容器创建public class Person { @Value("张三丰") private String name; @Value("#{20-2}") private ...原创 2019-03-20 16:07:09 · 342 阅读 · 1 评论 -
Spring事物管理(转)
Spring事物管理转载 2018-08-14 16:08:30 · 154 阅读 · 0 评论