`
he_wen
  • 浏览: 240761 次
  • 性别: 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...

    spring-framework-3.2.18 编译无误源码

    spring-framework-3.2.18.RELEASE-Gradle编译无误-可直接导入eclipse查看。已使用Gradle编译成eclipse项目的spring源码,版本是3.2.18。可以直接导入eclipse中,导入法方法可参看:...

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

    spring6pdf详细讲解

    Spring 详细讲解 Spring 是一个功能强大且功能齐全的 Java 应用程序框架,提供了一个通用的基础结构来支持开发企业级应用程序。 Spring 框架的核心是控制反转(IoC)和依赖注入(DI)模式,它们使得应用程序更加...

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

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

    基于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技术内幕:深入解析Spring架构与设计原理

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

    spring-ai-core 0.8.1

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

Global site tag (gtag.js) - Google Analytics