`
he_wen
  • 浏览: 239455 次
  • 性别: 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
分享到:
评论

相关推荐

    Spring+SpringMVC+Mybatis框架整合例子(SSM) 下载

    Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

    java *spring工具类 方便在非spring管理环境中获取bean

    java *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取...

    Spring Integration + Spring WS 整合

    Spring Integration + Spring WS 整合 在 Java 领域中,Spring Integration 和 Spring WS 是两个常用的框架,它们分别负责集成系统和 Web 服务。今天,我们将探讨如何将这两个框架整合在一起,实现一个完整的 Web ...

    spring3.0.5 所有jar文件

    包含spring 3.0.5的所有jar文件: org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE...

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

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

    spring2.0升级到spring3.0.5的开发包

    Spring框架是Java应用程序开发中的一个核心组件,它提供了一个丰富的IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)功能,使得开发者能够更方便地管理对象和实现模块化...

    Spring Boot整合Spring Batch,实现批处理

    在Java开发领域,Spring Boot和Spring Batch的整合是构建高效批处理系统的一种常见方式。Spring Boot以其简洁的配置和快速的启动能力深受开发者喜爱,而Spring Batch作为Spring框架的一部分,专注于批量处理任务,...

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    在构建分布式系统时,Spring Cloud Gateway 作为微服务架构中的边缘服务或 API 网关,扮演着至关重要的角色。它负责路由请求到相应的微服务,并可以提供过滤器功能,如限流、熔断等。而Spring Security 则是 Java ...

    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 ...

    基于Spring Boot 3.0、 Spring Cloud 2022 & Alibaba 的微服务RBAC 权限管理系统

    介绍一个基于Spring Boot 3.0、Spring Cloud 2022 & Alibaba的微服务RBAC权限管理系统。该系统可以实现微服务RBAC权限管理,通过RBAC权限管理机制对用户访问系统的权限进行限制,从而提高系统的安全性和可用性。同时...

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

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

    Spring cloud与Spring boot 集成完整案例

    Spring Cloud和Spring Boot是两个非常重要的Java开发框架,它们在微服务架构中扮演着核心角色。Spring Boot简化了创建独立的、生产级别的基于Spring的应用程序的过程,而Spring Cloud则为开发者提供了快速构建分布式...

    spring-ai-core 0.8.1

    《Spring AI Core 0.8.1:开启人工智能之旅》 在现代软件开发领域,Spring框架以其强大的功能和灵活性,已经成为Java开发中的首选框架之一。而Spring AI Core则是Spring生态系统中专门为人工智能(AI)和机器学习...

    Spring技术内幕:深入解析Spring架构与设计原理

    《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从本书中参透Spring框架的出色架构和设计思想,还能从...

    spring 4.3.14(全)最新的spring4正式版

    Spring 框架是 Java 开发中的一个核心组件,它为构建企业级应用程序提供了全面的编程和配置模型。Spring 4.3.14 是该框架的最后一个4.x系列正式版,发布于2018年2月24日。这个版本在Spring 5.0发布之前提供了一个...

    spring整合rabbitmq需要的jar包(spring版本4.2.0)

    在IT行业中,Spring框架是Java应用开发中的一个关键组件,它提供了一整套服务来简化企业级应用的构建。RabbitMQ则是一个流行的开源消息队列系统,它基于AMQP(Advanced Message Queuing Protocol)协议,用于高效地...

    SpringCloud项目实战各组件源代码案例

    Spring Cloud系列教程 Spring Boot Spring Cloud Stream 和 Kafka案例教程 springcloud生产者与消费者项目实战案例 Spring Cloud 中断路器 Circuit Breaker的应用 配置 Spring Cloud Config Server Spring Cloud ...

Global site tag (gtag.js) - Google Analytics