`

spring学习总结

阅读更多

本文总结一下spring2.5.6的知识点。

一、spring IOC的配置与使用

    1、IOC

          简而言之,IOC为控制反转。将自己new出来的对象,改为有容器进行赋值。具体有以下两种情况

          (1)初始化具体值 (2)灵活、动态的装配。

    2、XML的配置

           (1)、创建容器,命名为beans.xml,放在classpath下,大致配置如下

                      

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="xx" class="com.test.xx"> </bean> </beans>


      (2)注入类型

              Setter注入方式

                         

<bean id="x" class="com.test.xxx"> <property name="xxx" value="8"></property> </bean>


           构造方法注入方式

        

<bean id="x" class="com.test.xxx"> <constructor-arg> <ref bean="u"/> </constructor-arg> </bean>//注意这种方式要进行构造方法的定义


           接口注入方式

                代码略

        (3)简单属性的注入(int ,long,double)

           

<property name="xxx" value="8"></property>


 

      (4)bean 中的scope属性 

          singleton表示的是单例,prototype表示的是多例

   (5)集合注入<!--EndFragment-->

<!--EndFragment--><!--EndFragment-->

               

<bean name="x" class="com.test.xxx"> <property name="sets"> <set> <value>1</value> <value>2</value> </set> </property> <property name="lists"> <list> <value>1</value> <value>2</value> <value>3</value> </list> </property> <property name="maps"> <map> <entry key="1" value="1"></entry> <entry key="2" value="2"></entry> <entry key="3" value="3"></entry> <entry key="4" value="4"></entry> </map> </property> </bean>


     (6)自动装配

              autoWire  bean中的一个属性,常用的有byname,bytype

     (7)生命周期

             lazy-init=“true”:当容器初始化的时候,对应的bean不进行初始化

             init-method destroy-method不要和prototype一起用

  3、Annotation的配置

    (1)容器的配置

       

 

<!--EndFragment-->

    (2)@autoWire的配置

         默认按类型by type ,如果想用byName,使用@Qulifier, 如果写在set上,@qualifier需要写在参数上

    (3)@Resource<!--EndFragment-->

                需要加入  j2ee/common-annotations.jar,默认按名称,如果名称找不到,就按类型,可以 指定先按名称,不足:如果没有源码,就无法运用annotation,只能用xml

     (4)@Component

          初始化的名字默认为类名首字母小写,可以指定初始化bean的名字

    (5)@scope,@PostConstruct,@preDestroy

             用法略

二、spring AOP的配置与使用

       1、annotation的配置

              (1)xml配置

                    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <context:annotation-config /> <context:component-scan base-package="com.bjsxt"/> <aop:aspectj-autoproxy /> <!-- <aop:aspectj-autoproxy />这句的作用是:容器可以解析aop对应的annotation了。我们可以用@Aspect注解来建立我们的拦截类,可以用@Before等注解某个方法来建立处理方法。 @component 可以让容器来管理我们的拦截类 --> </beans>


         (2)annotation的具体例子

                

@Aspect @Component public class LogInterceptor { @Pointcut("execution(public * com.test.service..*.add(..))") public void myMethod(){}; @Before("myMethod()") public void before() { System.out.println("method before"); } @Around("myMethod()") public void aroundMethod(ProceedingJoinPoint pjp) throws Throwable { System.out.println("method around start"); pjp.proceed(); System.out.println("method around end"); } }

    (3)常见的annotation

               @Pointcut @Before @AfterReturning @AfterThrowing @After @Around  

 2、xml的配置

              (1)xml的具体例子

                      

<bean id="interceptor" class="com.test.aop.Interceptor"></bean> <aop:config> <aop:aspect id="logAspect" ref="interceptor"> <aop:before method="before" pointcut="execution(public * com.test.service..*.add(..))" /> </aop:aspect> </aop:config>

   

 三、Spring整合Hibernate

           1、整合步骤

                  (1)创建datasource,将连接数据库的属性注入到datasource中

                          

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value>classpath:jdbc.properties</value> </property> </bean> <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean>

      (2)创建sessionFactory,将datasource注入到sessionFactory中

           

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="annotatedClasses"> <list> <value>com.test.Model.User</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean>

    (3)将sessionFactory注入到dao层。

     (4)jar包问题自己动手解决!

     

     2、声明式事务管理

              (1)事务一般加在service层。                                

               (2)xml的配置

                       

xmlns:tx="http://www.springframework.org/schema/tx" http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd

                (3)annotation的配置

                        

<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <tx:annotation-driven transaction-manager="txManager"/>

       然后再某个方法上加上: @Transactional(propagation=Propagation.REQUIRED)

       注意不要使用opensession,要使用getcurrentsession

                 (4)xml配置

               

<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="getUser" read-only="true"/> <tx:method name="add*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="busynessService" expression="execution(public * com.test.service.*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="busynessService"/> </aop:config>

 (4)HibernateTemplate和HibernateDaoSupport

 

        通过向HibernateTemplate注入datasource,就可以用HibernateTemplate的save()等方法进行数据库数据的存取

 

 

      HibernateDaoSupport的用法为:先用一个类A继承它,然后向A的父类注入HibernateTemplate或者sessionFactory,然后用自己的DAO层的实现类继承它,然后就可以使用了!

 

 

 

 

<!--EndFragment-->

<!--EndFragment--><!--EndFragment-->

 

分享到:
评论

相关推荐

    关于Spring学习总结

    为了深入学习Spring,你可以参考官方文档、在线教程、书籍,如《Spring in Action》等,以及参与开源社区,如Stack Overflow、GitHub等,积累实战经验。 总的来说,Spring框架是Java开发的强大工具,理解和掌握其...

    Spring学习总结(不含整合其他框架)

    ### Spring学习总结(不含整合其他框架) #### 一、Spring框架简介 **Spring** 是一个开源框架,旨在简化企业级应用开发。通过使用Spring,即使是简单的JavaBean也可以实现原本只有EJB才能完成的功能。Spring的...

    Spring学习笔记总结

    Spring学习笔记总结 Spring是一个基于Java的框架,它提供了一种简洁、灵活的方式来构建企业级应用程序。在这个笔记中,我们将总结Spring的主要概念和技术,包括IOC、AOP、MVC、Struts2和Hibernate的集成。 IOC...

    Spring学习总结笔记

    以上就是Spring学习笔记的初步概述,涵盖了Spring的基本架构、配置文件的创建和加载,以及依赖注入的主要方式。随着学习的深入,还可以涉及AOP、Spring MVC、Spring Boot、Spring Data等更高级的主题,从而更好地...

    Spring学习总结!

    《Spring学习深度剖析》 Spring框架作为Java领域最广泛应用的轻量级框架,以其强大的功能、灵活的设计和广泛的社区支持,成为了开发企业级应用的重要工具。这篇总结将深入探讨Spring的核心概念、主要特性以及实际...

    struts2、hibernate、spring学习总结文档

    Struts2、Hibernate和Spring是Java开发中三个重要的框架,它们分别用于构建MVC应用程序、对象持久化管理和依赖注入及面向切面编程。...通过这些知识点的学习,开发者可以更好地理解和应用Java Web开发中的高级技术。

    Spring学习之牛人总结

    通过"Spring学习总结"这份资料,读者可以期待对以上知识点有更深入的理解,同时可能会涵盖实战案例、最佳实践和常见问题解决方案,帮助开发者提升技能,提高开发效率。在学习过程中,结合实际项目练习,理解并熟练...

    spring2.0学习笔记+spring定时任务

    在"spring学习总结.doc"这个文档中,可能包含了Spring框架的基本概念,如Bean的声明和管理,以及如何通过XML配置或注解方式实现依赖注入。此外,还可能涵盖了Spring MVC,它是Spring用于构建Web应用的部分,允许...

    Spring学习笔记 自我总结

    spring学习笔记

    Spring Security学习总结一

    ### Spring Security核心概念与实践详解 #### Spring Security概述 在深入了解Spring Security之前,我们先回顾一下没有Spring Security的权限管理场景。在传统架构中,权限验证逻辑往往与业务逻辑紧密交织,导致...

    Spring Security 学习总结1_3

    除此之外,官方文档、GitHub仓库、Stack Overflow和各种在线课程都是深入学习Spring Security的好资源。 总的来说,Spring Security是一个功能强大且灵活的安全框架,它的核心机制包括用户认证、权限授权,以及丰富...

    Spring学习技术总结

    课程学习时候的笔记总结,这里面没有代码部分,全是知识点的总结,方便大家去面试回答

    Spring2学习总结

    Spring2的学习主要涉及以下几个关键概念和技术: 1. **IOC (Inversion of Control) 控制反转**: 控制反转是指应用程序不再直接创建和管理依赖对象,而是将这种责任交给一个外部容器,也就是Spring框架。通过这种...

    【狂神说】spring PDF学习总结笔记 Spring5.pdf

    【狂神说】Spring PDF学习总结笔记主要涵盖了Spring框架的核心概念、优点、组成部分以及相关扩展。Spring是一个由Rod Johnson创建的开源框架,旨在简化企业级应用开发的复杂性,它结合了众多现有技术,如SSH(Struct...

    Spring MVC 学习记录总结1

    在这个学习记录总结中,我们将深入理解Spring MVC的核心概念、主要组件以及其工作流程。 1. Spring MVC 概述 Spring MVC 是Spring框架的一部分,它基于Spring IoC(Inversion of Control,控制反转)容器,简化了...

    SpringSecurity学习总结源代码

    SpringSecurity是Java开发中用于构建安全Web应用的框架,它提供了强大的身份验证、...在学习过程中,分析提供的源代码和示例将有助于深入理解SpringSecurity的工作原理,并能帮助你在实际项目中有效地应用这些知识。

Global site tag (gtag.js) - Google Analytics