Spring框架学习小结

利用周末加课设空余的时间认真学习了一下Spring框架,做个小结:

    Spring框架的核心为IOC和AOP,IOC:控制反转,AOP:面向切面编程。优点:分层的一站式轻量级框架,具有简单、可测试、松耦合等特点。

    IOC:将对象的创建交给Spring容器来实现。Spring核心容器:BeanFactory,ApplicationContext(是BeanFactory的子接口)。创建ApplicationContext接口实例的方法:(1)ClassPathXmlApplicationContext(从类路径classPath寻找配置文件)(2)FileSystemXmlApplicationContext(绝对路径查找)

    底层原理:(1)xml配置文件

                    (2)dom4j解析xml文件

                    (3)工厂设计模式

                    (4)反射(主要):Class class=Class.forName(类路径)

                                                    类名 类对象=class.newInstance();

DI:依赖注入,含义与IOC相同。作用:在使用Spring框架创建对象时,动态地将其所依赖的对象注入Bean组件中。

                实现方式:(1)setter方法注入,又分为调用无参构造器实例化Bean和无参静态工厂方法实例化Bean。

                                (2)构造方法注入:通过调用带参数的构造方法实现,每个参数代表一个依赖。

        @Component(""),@Repository(""),@Service(""),@Controller("")注解功能相同,用作类对象的创建(Bean的装配)

        @Resource(name=""):属性注入(基本类型或类对象)

        使用注解装配需开启注解扫描:

        <!--使用context命名空间,通知Spring扫描指定包下所有类,进行注解解析-->\

        <context:component-scan base-package="Bean所造的包路径"/>    //需要导入AOP的Jar包

———————————————————————————————————————————————AOP:面向切面编程,采用横向抽取机制。底层实现:动态代理

AspectJ:基于Java语言的AOP框架,提供了强大的AOP功能。

基于注解的声明式AspectJ:@Aspect:定义切面        

                 @Pointcut:定义切入点表达式(表达式格式:execution(* com.edu.sdju.*.*(..)”)*与com之间有一个空格)

@Before(“”):前置增强     @AfterReturning(“”):后置增强

@Around(“”):环绕通知   @AfterThrowing(value"",throwing=""):异常通知

@After(“”):最终通知

———————————————————————————————————————————————

针对数据库的操作,Spring提供了JdbcTemplate类

JdbcTemplate常用方法:(1)execute():完成执行SQL语句的功能

(2)update(String sql,Object... args):完成插入、更新、删除数据的操作,参数不能为NULL,返回受影响的行数

(3)query():    

                    1)queryForObject(String sql,Class<T> requiredType):返回摸一个值

                                例:String sql="select count(*) from user;

                                        int count=jdbcTemplate.queryForObject(sql,Integer.class)

                    2)queryForObject(String sql,RowMapper rowMapper,Object... args):返回一个Object类型的单行记录

                    3)List query(String sql,RowMapper rowMapper):返回一个List类型的结果

—————————————————————————————————————————————————————

(1)什么是事务:用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位

(2)事务特性:原子性、一致性、隔离性、持续性(ACDI)

Spring事务管理提供接口PlatformTransactionManager:事务管理器

Spring事务管理的方式:(1)编程式事务管理

(2)声明式事务管理(xml,annotation)

基于Annotation方式的声明式事务

1.配置事务管理器(xml文件中配置)

2.开启注解扫描

<context:component-scan base-package="Bean所造的包路径"/>

3.注册事务注解驱动

<tx:annotation-driven transaction-manager="transactionManager"/> //名字要与xml文件中配置的事务管理器id相同

4.在需要使用事务的SpringBean类或者Bean类的方法上添加注解@Transactional




OVER!






猜你喜欢

转载自blog.csdn.net/DJ_coder/article/details/80861048
今日推荐