zoukankan      html  css  js  c++  java
  • spring 基本操作总结主要是aop以及依赖注入的基本配置

    一所需架包

    spring 

    commom-logging.jar  spring.jar

    注解

    common-annotation.jar

    aop面向切面

    aspectjrt.jar    aspectjweaver.jar  cglibb-nodep.ja(权限带代理proxy)

    jdbc database

    common-pool.1.6.jar common-dbhp.jar mysql-connector-bin-*.*.*.jar

    配置文件的模板beans.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:tx="http://www.springframework.org/schema/tx"

           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/tx http://www.springframework.org/schema/tx/spring-tx-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">

    </beans>

    以上模板引入了面向切面(aop,权限代理(context)以及数据库操作(tx)的命名空间

    三基本使用

    1.创建bean对象

    1.1默认通过set

    <bean id="persionBean" class="com.my.PersionBean.impl.PersionBean" destroy-method="destory" lazy-init="true" init-method="init"></bean>

    1.2通过静态工厂(factory-method)

    <bean id="persionBean2" class="com.my.PersionBean.impl.PersionBeanFactory" lazy-init="true" factory-method="creBeanFactory"></bean>

    1.3通过工厂非静态

    <bean id="persionBean3" class="com.my.PersionBean.impl.PersionFactory" ></bean>

    <bean id="persionBean4" factory-bean="persionBean3" scope="prototype" factory-method="createOrderFactory"></bean>

    2.注入bean

    <property name="persion" ref="persionBean4" ></property>

    3.注入其他属性

    <property name="name" value="校长"></property>

    <property name="age" value="15"></property>

    <property name="habits">

    4.注入List<>属性

    <property name="habits">

    <list>

    <value>第一个</value>

    <value>第二个</value>

    <value>第三个</value>

    </list>

    </property>

    5.通过<constructor-arg index="0" value="xiaozhang"></constructor-arg>构造函数index参数索引

    6.对象的创建scope

    scope="prototype" 实体模式(多个对象)

    scope="singleton"单例模式(default)在容器只有一个对象

    另外还有session,request 

        通过注解方式注入

    <context:annotation-config/>//开启注解

    通过@Resource(name="student")指定beanid注入 通过@Autowired@Qualifier(value="student")(命名id)注入

    通过注解方式创建bean

    @Component (任何)

    @Repository(value="student")数据访问)

    @Controller(控制)

    @Service(服务)

      . @Scope("prototype")指定域)

    @PostConstruct初始化方法)

    @PreDestroy销毁方法)

    7.aop切面

    使用jdk进行权限代理

    必须有接口

    @Aspect

    public class MyIntercepter {

    @Pointcut("execution (* com.my.aop.impl.PersionServiceBean.*(..))")

    private void anyMethod() {//声明切入点

    }

    @Before("anyMethod()&&args(name)")

    private void doAccessCheck(String name){

    System.out.println("这是前置通知");

    }

    @AfterReturning(pointcut="anyMethod()",returning="result")

    private String doAfterReturn(String result){

    System.out.println("这是后置通知"+result);

    return result;

    }

    @AfterThrowing("anyMethod()")

    private void doAfterThrow(){

    System.out.println("这是例外通知");

    }

    @After("anyMethod()")

    private void doAfter(){

    System.out.println("这是最终通知");

    }

    @Around("anyMethod()")

    public Object around(ProceedingJoinPoint point) throws Throwable{

    System.out.println("这是环绕通知");

    Object resultObject=point.proceed();

    System.out.println("推出");

    return resultObject;

    }

    使用cglib注解方式  <aop:aspectj-autoproxy/>启动注解)

    public class MyIntercepter {

    @Pointcut("execution (* com.my.aop.impl.PersionServiceBean.*(..))")

    private void anyMethod() {//声明切入点

    }

    @Before("anyMethod()&&args(name)")

    private void doAccessCheck(String name){

    System.out.println("这是前置通知");

    }

    @AfterReturning(pointcut="anyMethod()",returning="result")

    private String doAfterReturn(String result){

    System.out.println("这是后置通知"+result);

    return result;

    }

    @AfterThrowing("anyMethod()")

    private void doAfterThrow(){

    System.out.println("这是例外通知");

    }

    @After("anyMethod()")

    private void doAfter(){

    System.out.println("这是最终通知");

    }

    @Around("anyMethod()")

    public Object around(ProceedingJoinPoint point) throws Throwable{

    System.out.println("这是环绕通知");

    Object resultObject=point.proceed();

    System.out.println("推出");

    return resultObject;

    }

    }

    使用xml

       <aop:aspectj-autoproxy/>

        <bean id="persionServiceBean" class="com.my.aop.impl.PersionServiceBean"></bean>

         <bean id="interceptor" class="com.my.aop.impl.myInterceptor"> </bean>

         <aop:config>

         <aop:aspect id="aspect" ref="interceptor">

         <aop:pointcut expression="execution (* com.my.aop.impl.PersionServiceBean.*(..))" id="mycut"/>

         <aop:before  method="doAccessCheck" pointcut-ref="mycut"/>

         <aop:around method="around" pointcut-ref="mycut"/>

         </aop:aspect>

         </aop:config>

    springjdbc操作

    <context:property-placeholder location="classpath:jdbc.properties"/>(引入属性文件)

         (创建dataSource)  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

           <property name="driverClassName" value="${driverClassName}"></property>

           <property name="url" value="${url}"></property>

           <property name="username" value="${username}"></property>

             <property name="password" value="${password}"></property>

             <property name="maxActive" value="${maxActive}"></property>

             <property name="initialSize" value="${initialSize}"></property>

             <property name="maxIdle" value="${maxIdle}"></property>

             <property name="minIdle" value="${minIdle}"></property>

           </bean>

    <bean  id="txManager" (创建事物bean)class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

      <property name="dataSource" ref="dataSource"></property>

     </bean>

    以注解方式

    <tx:annotation-driven transaction-manager="txManager" />(启动注解)

    xml

    <aop:config>

     <aop:pointcut expression="execution(* com.my.jdbc.service.impl.StudentService.*(..))" id="transactionPointCut"/>

     <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointCut"/>

     </aop:config>

     <tx:advice id="txAdvice" transaction-manager="txManager">

     <tx:attributes>

     <tx:method name="get*" propagation="NOT_SUPPORTED"/>

     <tx:method name="*" />

     </tx:attributes>

     </tx:advice>

    详细见例子

  • 相关阅读:
    让网络更轻盈——网络功能虚拟化技术的现状和未来(中兴通讯)
    服务链(Service Chaining,or Service Function Chaining,SFC,功能服务链)
    中间件(middlebox)
    OpenStack 简介
    数据库系统原理——ER模型与关系模型
    Google 面试
    可扩展性 Scalability
    pay-as-you-go
    Java 自动装箱与拆箱(Autoboxing and unboxing)
    齐次坐标的理解
  • 原文地址:https://www.cnblogs.com/maybo/p/5182541.html
Copyright © 2011-2022 走看看