`
he_wen
  • 浏览: 235158 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

spring

阅读更多

1、环境搭建

a)只用IOC功能

spring.jar、jarkata-commons.jar/commons-loggin.jar

2、IOC容器

   A)实例化具体bean

   B)动态装配

3、AOP支持

    A)安全检查

    B)事务管理

4、Spring IOC配置与应用

    1、FAQ:不给提示

                     A)window-preferences-myeclipse-xml-xml catalog

                    B) User spefied Entries -add

                             i、Location:.../spring2.5.6/dist\resources\spring-beans-2.5.xsd

                             ii、   URI:

                                  file:/spring2.5.6/dist\resources\spring-beans-2.5.xsd

                            iii、  key type:   schema Location

                           iv、  Key

                                        http://www.springframework.org/schema/beans  这个是些配置文件XML中的头信息

               2、注入类型

                    A) setter方法注入

                     B) 构造方法的注入

                   C)  接口注入(也称方法注入)

               3、id vs  name

                  A)Spring_0400_IOC_id_Name  这个是测试项目的实例  下面同此

                  B)  name与ID没有什么区别只是name 可以用特殊的字符如_等

               4、简单属性的注入

                     A) Spring_0500_IOC_SimpleProperty

                     B)  <property name=... value=....>

               5、bean中属性的范围scope

                   A)  Spring_0600_IOC_Bean_Scope

                   B)   singleton 单列

                   C)    proptotype 每次都创建新的对象原型,还有与web 相关的属性,但是都会提示

               6、集合注入

                     A)  Spring_0700_IOC_Collections

                     B)   很少用 但是不理解,参考文档

                7、自动装配

                    A)   Spring_0800_IOC_AutoWire

                    B)   autowire="byName"/"byType"

                    C)   如果所有的bean都用同一种,可以使用beans的属性:default-autowire

                8、生命周期

                      A)  lazy-init(不重要)

                      B)  init-method destory-method 不要和scope="prototype"一起使用,这个相当在方法的前面和后   面加入日志,自己写的bean很少用但是别人提供的会使用,如datasource连接池

                 9、Annotation 第一步:

                     A) 修改XML文件,参考文档<context: annotation-config />

                       怎样在Java代码中有自动提示功能:如加入@就有提示

                       在window-preferences-Java-Editor-content Assist即可

                  这边要有其功能也要配置schame模式的路径,具体方法参见4中FAQ

                  10、   如果自动注入的方法有两个bean注入,系统无法知道注入那个bean,所以就要

                     @Autowired

                      public void setUserDAO(@Qualifier("u这个是在配置文件中bean的命名")  UserDAO userDao){}

                      应用的不是很多

                   11、在使用@Resource(一般常用的)

                             A) 必须在j2EE中加入common-annoations.jar

                             B) 默认是按照名称:名称找不到,按类型

                             C)  可以指定特定的类型如:

                                   @Resource(name="u")

                      public void setUserDAO(UserDAO userDao){}

                            D) 但是如果手中没有源码,就可以在XML文件中配置,这个第2中方式

                 12、使用@Component,@Service,@Controller,@Repository作用都是一样,看以后的版本是否有扩充

                     A>要在XML文件中beans标签中加入

                          <context:component-scan base-package="要在自己哪个包中注入的bean如:com.hewen">

                          就会在com.hewen包下扫描所有的类,直到发现有类加入@component.

                         然后 @Resource

                         public void setUserDAO(UserDAO userDao){}此方法就会注入有@component类中,

                        但是如果有多个类加入了@component的组件,就要为组件命名如:@component("u")

                          要注入的方法前面加入@Resource(name="u"),这样的好处就不需要在配置文件中写bean来配置类,

                        一般情况下记得要写名字如:@component("userService")

                       B) 开发效率高

                  13、@scope与写在bean写XML中的scope一样,

                         @PostConstruct=init-method;  @PreDestory=destory-method

 注意以上13条忘记可以参见自己的源码或者查看文档

五、 AOP的概念

   面向切面编程,某个模块可有可无可以在配置文件进行处理

    动态代理的应用:事务管理、做日志、做权限管理、效率的检查

     别如说过滤器

 1、配置新的配置文件:

         首先要加<aop:aspectj-autoproxy />

         然后加入 xmlns:aop="http://www.springframework.org/schema/aop"

           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd

       如果需要在写的时候需要提示:则需要在myeclipse进行配置,详细操作见Spring IOC配置与应用

    FAQ:不给提示.

 2、<aop:aspectj-autoproxy />aspectj是专门装配动态代理的框架,是一个面向切面的框架

 3、如需要装配动态代理的标签就需要加入两个Jar文件,分别为aspectjtr.jar、aspectjweaver.jar

 4、常见的Annotation:

   可以代理构造方法、属性、异常等等详细的配置可以查看文档

   A)  JoinPoint  是连接点如:

        @Before("execution(public void com.bjsxt.dao.impl.UserDAOImpl.save(com.bjsxt.model.User))")
       public void before(){
          System.out.println("method start");
       }

           在此类上要加入 @Aspect和@Component
       B)Pointcut 相当于JoinPoint的集合如:

            @Pointcut("execution(public * com.bjsxt.service..*.add(..))") com.bjsxt.service在命名空间下所有add的方法   都进行动态代理
      C)Before
      D)AfterReturning
      E)AfterThrowing
      F)After
      G)Around 类似于dofilter

         @Around("com.xyz.myapp.SystemArchitecture.businessService()")
        public ObjectdoBasicProfiling(ProceedingJoinPointpjp) throws Throwable{
        //startstopwatch
       ObjectretVal=pjp.proceed();要调用此函数方法才能往下调用,相当于模式的责任链
       //stopstopwatch
         return retVal;
}

             如果方法前后命名空间重复就可以这么定义:

                 @Pointcut("execution(public * com.bjsxt.dao..*.*(..))")
         public void myMethod(){};
        @Before("myMethod()")
        public void before(){
             System.out.println("method before");
           };
          @AfterReturning("myMethod()")
         public void afterMethod(){
           System.out.println("method after");
           };

5、当程序报异常无法加载动态代理类,出现GBL什么之类的故需要jar文件,

    因为一个类需要进行代理的时候,必须实现InvocationHandler接口,就会利用JDK动态代理获取代理类,

    UserDAO userDAO = new UserDAOImpl();
        LogInterceptor li = new LogInterceptor();//该类实现了InvocationHandler接口
        li.setTarget(userDAO);
        UserDAO userDAOProxy = (UserDAO)Proxy.newProxyInstance(userDAO.getClass().getClassLoader(),   userDAO.getClass().getInterfaces(), li);//获取代理类,第一个参数获取被代理类的类加载器,第二个参数是被代理类的实现的接口,第三个参数是处理被代理类的类既是实现InvocationHandler接口

       System.out.println(userDAOProxy.getClass());//可以进行测试是否得到代理对象

       userDAOProxy.delete();
        userDAOProxy.save(new User());

    如果没有实现此接口,那么实行2进制码的类库进行代理,需要加入jar文件cglib-nodep.jar

 

 

0
0
分享到:
评论

相关推荐

    SpringBatch+Spring+Mybatis+MySql (spring batch 使用jar)

    Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供...

    spring源码合集spring源码合集

    spring

    spring3.1 官方全部jar包

    spring3.1官方所有的jar包 org.springframework.aop-3.1.RELEASE.jar org.springframework.asm-3.1.RELEASE.jar org.springframework.aspects-3.1.RELEASE.jar org.springframework.beans-3.1.RELEASE.jar org....

    Spring MVC 入门实例

    这篇文章将教你快速地上手使用 Spring 框架. 如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring...

    Getting started with Spring Framework: covers Spring 5(epub)

    Getting started with Spring Framework (4th Edition) is a hands-on guide to begin developing applications using Spring Framework 5. The examples (consisting of 88 sample projects) that accompany this ...

    最新版本的Struts2+Spring4+Hibernate4框架整合

    项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + ...

    spring源码分析(1-10)

    Spring源代码解析(一):Spring中的事务处理 Spring源代码解析(二):ioc容器在Web容器中的启动 Spring源代码分析(三):Spring JDBC Spring源代码解析(四):Spring MVC Spring源代码解析(五):Spring AOP获取Proxy ...

    SpringBoot+SpringCloud面试题.doc

    Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring boot专注于快速、方便集成的单个个体,Spring Cloud是关注...

    spring3.0.0相关jar包

    spring3.0.0相关jar包 org.springframework.aop-3.0.0.RELEASE org.springframework.asm-3.0.0.RELEASE org.springframework.aspects-3.0.0.RELEASE org.springframework.beans-3.0.0.RELEASE org.springframework....

    spring4.3.1官方全套jar包下载

    spring4.3.1全套jar下载。 4.3.1/spring-aop-4.3.1.RELEASE.jar 4.3.1/spring-aspects-4.3.1.RELEASE.jar 4.3.1/spring-beans-4.3.1.RELEASE.jar 4.3.1/spring-context-4.3.1.RELEASE.jar 4.3.1/spring-core-4.3.1....

    开发工具 spring-aop-4.3.6.RELEASE

    开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE...

    spring-mock.jar

    Classes contained in spring-mock.jar: org.springframework.mock.jndi.ExpectedLookupTemplate.class org.springframework.mock.jndi.SimpleNamingContext.class org.springframework.mock.jndi....

    spring 3.2.4.RELEASE jar包

    spring 3.2.4 Realease 的所有jar包: spring-context-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-beans-3.2.4.RELEASE.jar spring-test-3.2.4.RELEASE.jar spring-web-3.2.4.RELEASE.jar spring-aop-...

    spring_in_action-sixth-edition.pdf

    "Spring 实战第六版" Spring Framework 是一个广泛使用的 Java 应用程序框架,它提供了一个通用的编程模型和配置机制,帮助开发者快速构建企业级应用程序。下面是对 Spring Framework 的详细知识点总结: 1. 什么...

    基于spring cloud 和vue全家桶的开源电商源码

    基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的开源电商源码基于spring cloud 和vue全家桶的...

    Spring技术内幕:深入解析Spring架构与设计原理(第2部分)

    Spring技术内幕:深入解析Spring架构与设计原理(第2部分) 《Spring技术内幕:深入解析Spring架构与设计原理》是Spring领域的问鼎之作,由业界拥有10余年开发经验的资深Java专家亲自执笔!Java开发者社区和Spring...

    Spring in Action 中文版 第五部分(Spring in Action CN.005)

    Spring in Action CN.001&lt;br&gt;Spring in Action CN.002&lt;br&gt;Spring in Action CN.003&lt;br&gt;Spring in Action CN.004&lt;br&gt;Spring in Action CN.005&lt;br&gt;Spring in Action CN.006&lt;br&gt;Spring in Action CN.007&lt;br&gt;Spring in ...

    org.spring-framework-3.0.4. 所有jar

    org.springframework.aop-3.0.4.RELEASE.jar org.springframework.asm-3.0.4.RELEASE.jar org.springframework.aspects-3.0.4.RELEASE.jar org.springframework.beans-3.0.4.RELEASE.jar org.springframework....

    尚硅谷SpringCloud第2季2020版.mmap

    一篇很好的springCloud学习的思维导读,详细的介绍了,springCloud的搭建步骤以及各组件的说明讲解 涵盖 Eureka服务注册与发现 Zookeeper服务注册与发现 Consul服务注册与发现 Ribbon负载均衡服务调用 OpenFeign...

    spring cloud 体系版本选型,涉及spring cloud alibaba spring boot spring cloud

    spring boot , spring cloud alibaba, spring cloub 版本选型

Global site tag (gtag.js) - Google Analytics