热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大数据正式31

Spring练习jar包准备异常:代码结构如图所示PersonServletPersonServicePersonDao用异常通知捕获servlet的所有的方法抛出的

Spring练习

jar包准备

异常:

  • 代码结构如图所示
    • PersonServlet
    • PersonService
    • PersonDao
  • 用异常通知捕获servlet的所有的方法抛出的异常:

    • 目标对象所在的类 com.peng.web.PersonServlet
    • 抛出异常所在的方法 save()
    • 抛出异常的名称 XxxException
    • 异常信息 message
  • 意义:

    • 异常处理类和业务逻辑类完全松耦合。
    • 时刻捕获生产生产环境中所有的错误,实时监控该系统,异常收集。
  • 代码

    • com.peng.aspect

      • MyAspect

        package com.peng.aspect;import org.aspectj.lang.JoinPoint;
        import org.aspectj.lang.ProceedingJoinPoint;
        import org.aspectj.lang.annotation.After;
        import org.aspectj.lang.annotation.AfterReturning;
        import org.aspectj.lang.annotation.AfterThrowing;
        import org.aspectj.lang.annotation.Around;
        import org.aspectj.lang.annotation.Aspect;
        import org.aspectj.lang.annotation.Before;
        import org.aspectj.lang.annotation.Pointcut;
        import org.springframework.stereotype.Component;/*** 切面* * @author Administrator* */
        @Component
        @Aspect
        public class MyAspect {//// /**// * 给web层加入切面// */// 创建一个切入点表达式的引用@Pointcut("within(com.peng.web.*)")public void pc() {}// 前置事务@Before(value = "pc()")public void beforeSomething(JoinPoint jp) {System.out.println("前置事务");}//// 环绕事务@Around(value = "pc()")public Object aroundSomething(ProceedingJoinPoint pjp) throws Throwable {System.out.println("环绕事务---------aa----------------");Object obj = pjp.proceed();System.out.println("环绕事务----------ww--------------");return obj;}//// 后置事务@AfterReturning(value = "pc()")public void afterSomething(JoinPoint jp) {System.out.println("后置事务");}// 异常事务@AfterThrowing(value = "pc()", throwing = "t")public void exceptionSomething(JoinPoint jp, Throwable t) {System.out.println("异常事务");System.err.println("异常类:" + t.getClass());System.err.println("异常信息:" + t.getMessage());System.out.println("异常事务");}// 最终事务@After(value = "pc()")public void finallySomething(JoinPoint jp) {System.out.println("最终事务");}}

    • com.peng.dao

      • PersonDao

        package com.peng.dao;import org.springframework.stereotype.Repository;import com.peng.pojo.Person;@Repository(value = "personDao")
        public class PersonDao {public void savePerson(Person person) {System.out.println("存储了对象" + person);}}

    • com.peng.pojo

      • Person

        package com.peng.pojo;import org.springframework.beans.factory.annotation.Value;
        import org.springframework.stereotype.Component;@Component(value = "person")
        public class Person {@Value(value = "张三")private String name;@Value(value = "12")private int age;@Overridepublic String toString() {return "姓名:" + name + ",年龄:" + age;}
        }

    • com.peng.service

      • PersonService

        package com.peng.service;import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.beans.factory.annotation.Qualifier;
        import org.springframework.stereotype.Service;import com.peng.dao.PersonDao;
        import com.peng.pojo.Person;@Service(value = "personService")
        public class PersonService {@Autowired@Qualifier(value = "personDao")private PersonDao personDao;public void savePerson(Person person) {personDao.savePerson(person);}}

    • com.peng.test

      • Test

        package com.peng.test;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.peng.pojo.Person;
        import com.peng.web.PersonServlet;/*** 测试通用类* * @author Administrator* */
        public class Test {@org.junit.Testpublic void personModelTest() {// 获取Spring容器ClassPathXmlApplicationContext cpxac = new ClassPathXmlApplicationContext("applicationContext.xml");// 获取Person对象Person person = (Person) cpxac.getBean("person");// 获取PersonServlet对象PersonServlet personServlet = (PersonServlet) cpxac.getBean("personServlet");// 执行PersonServlet的savePerson方法personServlet.savePerson(person);}
        }

    • com.peng.web

      • PersonServlet

        package com.peng.web;import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.beans.factory.annotation.Qualifier;
        import org.springframework.stereotype.Controller;import com.peng.pojo.Person;
        import com.peng.service.PersonService;@Controller(value = "personServlet")
        public class PersonServlet {@Autowired@Qualifier("personService")private PersonService personService;public void savePerson(Person person) {int bug = 1 / 0;System.out.println(bug);personService.savePerson(person);}}

    • 配置文件

      • applicationContext




方法执行的时间

  • 计算servlet的各个类的各个方法的执行时间
    1. 类的名称
    2. 方法的名称
    3. 执行的时间
  • 控制台输出

  • 意义:用来监控程序的性能问题

  • 代码

    • com.peng.aspect

      • MyAspect

        package com.peng.aspect;import org.aspectj.lang.JoinPoint;
        import org.aspectj.lang.ProceedingJoinPoint;
        import org.aspectj.lang.annotation.After;
        import org.aspectj.lang.annotation.AfterReturning;
        import org.aspectj.lang.annotation.AfterThrowing;
        import org.aspectj.lang.annotation.Around;
        import org.aspectj.lang.annotation.Aspect;
        import org.aspectj.lang.annotation.Before;
        import org.aspectj.lang.annotation.Pointcut;
        import org.springframework.stereotype.Component;/*** 切面* * @author Administrator* */
        @Component
        @Aspect
        public class MyAspect {//// /**// * 给web层加入切面// */// 创建一个切入点表达式的引用@Pointcut("within(com.peng.web.*)")public void pc() {}// 前置事务@Before(value = "pc()")public void beforeSomething(JoinPoint jp) {System.out.println("前置事务");}//// 环绕事务@Around(value = "pc()")public Object aroundSomething(ProceedingJoinPoint pjp) throws Throwable {long startTime = System.currentTimeMillis();System.out.println("环绕事务---------aa--------当前时间(毫秒值):" + startTime);Object obj = pjp.proceed();long endTime = System.currentTimeMillis();System.out.println("环绕事务----------ww------当前时间(毫秒值):" + endTime);System.out.println("方法的执行时间:" + (endTime - startTime));return obj;}//// 后置事务@AfterReturning(value = "pc()")public void afterSomething(JoinPoint jp) {System.out.println("后置事务");}// 异常事务@AfterThrowing(value = "pc()", throwing = "t")public void exceptionSomething(JoinPoint jp, Throwable t) {System.out.println("异常事务");System.err.println("异常类:" + t.getClass());System.err.println("异常信息:" + t.getMessage());System.out.println("异常事务");}// 最终事务@After(value = "pc()")public void finallySomething(JoinPoint jp) {System.out.println("最终事务");}}

    • com.peng.dao

      • PersonDao

        package com.peng.dao;import org.springframework.stereotype.Repository;import com.peng.pojo.Person;@Repository(value = "personDao")
        public class PersonDao {public void savePerson(Person person) {System.out.println("存储了对象" + person);}}

    • com.peng.pojo

      • Person

        package com.peng.pojo;import org.springframework.beans.factory.annotation.Value;
        import org.springframework.stereotype.Component;@Component(value = "person")
        public class Person {@Value(value = "张三")private String name;@Value(value = "12")private int age;@Overridepublic String toString() {return "姓名:" + name + ",年龄:" + age;}
        }

    • com.peng.service

      • PersonService

        package com.peng.service;import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.beans.factory.annotation.Qualifier;
        import org.springframework.stereotype.Service;import com.peng.dao.PersonDao;
        import com.peng.pojo.Person;@Service(value = "personService")
        public class PersonService {@Autowired@Qualifier(value = "personDao")private PersonDao personDao;public void savePerson(Person person) {personDao.savePerson(person);}}

    • com.peng.test

      • Test

        package com.peng.test;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.peng.pojo.Person;
        import com.peng.web.PersonServlet;/*** 测试通用类* * @author Administrator* */
        public class Test {@org.junit.Testpublic void personModelTest() {// 获取Spring容器ClassPathXmlApplicationContext cpxac = new ClassPathXmlApplicationContext("applicationContext.xml");// 获取Person对象Person person = (Person) cpxac.getBean("person");// 获取PersonServlet对象PersonServlet personServlet = (PersonServlet) cpxac.getBean("personServlet");// 执行PersonServlet的savePerson方法personServlet.savePerson(person);}
        }

    • com.peng.web

      • PersonServlet

        package com.peng.web;import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.beans.factory.annotation.Qualifier;
        import org.springframework.stereotype.Controller;import com.peng.pojo.Person;
        import com.peng.service.PersonService;@Controller(value = "personServlet")
        public class PersonServlet {@Autowired@Qualifier("personService")private PersonService personService;public void savePerson(Person person) {personService.savePerson(person);}}

    • 配置文件

      • applicationContext




事务

  • 当方法上有事务的注解,该方法就有事务。写一个切面来完成
  • 代码

    • com.peng.annocation

      • Transaction

        package com.peng.annotation;import java.lang.annotation.ElementType;
        import java.lang.annotation.Retention;
        import java.lang.annotation.RetentionPolicy;
        import java.lang.annotation.Target;@Target(ElementType.METHOD)
        @Retention(RetentionPolicy.RUNTIME)
        public @interface Transaction {}

    • com.peng.aspect

      • MyAspect

        package com.peng.aspect;import org.aspectj.lang.JoinPoint;
        import org.aspectj.lang.ProceedingJoinPoint;
        import org.aspectj.lang.annotation.After;
        import org.aspectj.lang.annotation.AfterReturning;
        import org.aspectj.lang.annotation.AfterThrowing;
        import org.aspectj.lang.annotation.Around;
        import org.aspectj.lang.annotation.Aspect;
        import org.aspectj.lang.annotation.Before;
        import org.aspectj.lang.annotation.Pointcut;
        import org.springframework.stereotype.Component;import com.peng.annotation.Transaction;/*** 切面* * @author Administrator* */
        @Component
        @Aspect
        public class MyAspect {//// /**// * 给web层加入切面// */// 创建一个切入点表达式的引用@Pointcut("within(com.peng.web.*)")public void pc() {}// 前置事务@Before(value = "pc()")public void beforeSomething(JoinPoint jp) {System.out.println("前置事务");}//// 环绕事务@Around(value = "pc() && @annotation(ann)")public Object aroundSomething(ProceedingJoinPoint pjp, Transaction ann)throws Throwable {System.out.println("环绕事务---------aa----------------");System.out.println("事务Start");Object obj = pjp.proceed();System.out.println("事务End");System.out.println("环绕事务----------ww--------------");return obj;}//// 后置事务@AfterReturning(value = "pc()")public void afterSomething(JoinPoint jp) {System.out.println("后置事务");}// 异常事务@AfterThrowing(value = "pc()", throwing = "t")public void exceptionSomething(JoinPoint jp, Throwable t) {System.out.println("异常事务");System.err.println("异常类:" + t.getClass());System.err.println("异常信息:" + t.getMessage());System.out.println("异常事务");}// 最终事务@After(value = "pc()")public void finallySomething(JoinPoint jp) {System.out.println("最终事务");}}

    • com.peng.dao

      • PersonDao

        package com.peng.dao;import org.springframework.stereotype.Repository;import com.peng.pojo.Person;@Repository(value = "personDao")
        public class PersonDao {public void savePerson(Person person) {System.out.println("存储了对象" + person);}}

    • com.peng.pojo

      • Person

        package com.peng.pojo;import org.springframework.beans.factory.annotation.Value;
        import org.springframework.stereotype.Component;@Component(value = "person")
        public class Person {@Value(value = "张三")private String name;@Value(value = "12")private int age;@Overridepublic String toString() {return "姓名:" + name + ",年龄:" + age;}
        }

    • com.peng.service

      • PersonService

        package com.peng.service;import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.beans.factory.annotation.Qualifier;
        import org.springframework.stereotype.Service;import com.peng.dao.PersonDao;
        import com.peng.pojo.Person;@Service(value = "personService")
        public class PersonService {@Autowired@Qualifier(value = "personDao")private PersonDao personDao;public void savePerson(Person person) {personDao.savePerson(person);}}

    • com.peng.test

      • Test

        package com.peng.test;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.peng.pojo.Person;
        import com.peng.web.PersonServlet;/*** 测试通用类* * @author Administrator* */
        public class Test {@org.junit.Testpublic void personModelTest() {// 获取Spring容器ClassPathXmlApplicationContext cpxac = new ClassPathXmlApplicationContext("applicationContext.xml");// 获取Person对象Person person = (Person) cpxac.getBean("person");// 获取PersonServlet对象PersonServlet personServlet = (PersonServlet) cpxac.getBean("personServlet");// 执行PersonServlet的savePerson方法(实验组)personServlet.savePerson(person);System.out.println("=8=8==8=8=8=8=8==8=8=8=8=8=8=8=8=8=8=8=8==8=8=8=8=8==88=8=8=");// 执行PersonServlet的delPerson方法(参照组)personServlet.delPerson();}
        }

    • com.peng.web

      • PersonServlet

        package com.peng.web;import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.beans.factory.annotation.Qualifier;
        import org.springframework.stereotype.Controller;import com.peng.annotation.Transaction;
        import com.peng.pojo.Person;
        import com.peng.service.PersonService;@Controller(value = "personServlet")
        public class PersonServlet {@Autowired@Qualifier("personService")private PersonService personService;@Transactionpublic void savePerson(Person person) {personService.savePerson(person);}public void delPerson() {System.out.println("del person ~~");}}

    • 配置文件

      • applicationContext




权限控制

  • 代码

    • com.peng.annotation

      • Right

        package com.peng.annotation;import java.lang.annotation.ElementType;
        import java.lang.annotation.Retention;
        import java.lang.annotation.RetentionPolicy;
        import java.lang.annotation.Target;/*** 权限控制* * @author Administrator* */
        @Target(ElementType.METHOD)
        @Retention(RetentionPolicy.RUNTIME)
        public @interface Right {String right() default "游客";
        }

    • com.peng.aspect

      • MyAspect

        package com.peng.aspect;import org.aspectj.lang.JoinPoint;
        import org.aspectj.lang.ProceedingJoinPoint;
        import org.aspectj.lang.annotation.After;
        import org.aspectj.lang.annotation.AfterReturning;
        import org.aspectj.lang.annotation.AfterThrowing;
        import org.aspectj.lang.annotation.Around;
        import org.aspectj.lang.annotation.Aspect;
        import org.aspectj.lang.annotation.Before;
        import org.aspectj.lang.annotation.Pointcut;
        import org.springframework.stereotype.Component;import com.peng.annotation.Right;/*** 切面* * @author Administrator* */
        @Component
        @Aspect
        public class MyAspect {//// /**// * 给web层加入切面// */// 创建一个切入点表达式的引用@Pointcut("within(com.peng.web.*)")public void pc() {}// 前置事务@Before(value = "pc()")public void beforeSomething(JoinPoint jp) {System.out.println("前置事务");}//// 环绕事务@Around(value = "pc() && @annotation(right)")public Object aroundSomething(ProceedingJoinPoint pjp, Right right)throws Throwable {System.out.println("环绕事务---------aa----------------");System.out.println("当前用户权限:" + right.right());if (!"管理员".equals(right.right())) {System.out.println("e,你不是管理员,不能进行该操作");return null;}Object obj = pjp.proceed();System.out.println("环绕事务----------ww--------------");return obj;}//// 后置事务@AfterReturning(value = "pc()")public void afterSomething(JoinPoint jp) {System.out.println("后置事务");}// 异常事务@AfterThrowing(value = "pc()", throwing = "t")public void exceptionSomething(JoinPoint jp, Throwable t) {System.out.println("异常事务");System.err.println("异常类:" + t.getClass());System.err.println("异常信息:" + t.getMessage());System.out.println("异常事务");}// 最终事务@After(value = "pc()")public void finallySomething(JoinPoint jp) {System.out.println("最终事务");}}

    • com.peng.dao

      • PersonDao

        package com.peng.dao;import org.springframework.stereotype.Repository;import com.peng.pojo.Person;@Repository(value = "personDao")
        public class PersonDao {public void savePerson(Person person) {System.out.println("存储了对象" + person);}}

    • com.peng.pojo

      • Person

        package com.peng.pojo;import org.springframework.beans.factory.annotation.Value;
        import org.springframework.stereotype.Component;@Component(value = "person")
        public class Person {@Value(value = "张三")private String name;@Value(value = "12")private int age;@Overridepublic String toString() {return "姓名:" + name + ",年龄:" + age;}
        }

    • com.peng.service

      • PersonService

        package com.peng.service;import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.beans.factory.annotation.Qualifier;
        import org.springframework.stereotype.Service;import com.peng.dao.PersonDao;
        import com.peng.pojo.Person;@Service(value = "personService")
        public class PersonService {@Autowired@Qualifier(value = "personDao")private PersonDao personDao;public void savePerson(Person person) {personDao.savePerson(person);}}

    • com.peng.test

      • Test

        package com.peng.test;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.peng.pojo.Person;
        import com.peng.web.PersonServlet;/*** 测试通用类* * @author Administrator* */
        public class Test {@org.junit.Testpublic void personModelTest() {// 获取Spring容器ClassPathXmlApplicationContext cpxac = new ClassPathXmlApplicationContext("applicationContext.xml");// 获取Person对象Person person = (Person) cpxac.getBean("person");// 获取PersonServlet对象PersonServlet personServlet = (PersonServlet) cpxac.getBean("personServlet");// 执行PersonServlet的savePerson方法personServlet.savePerson(person);}
        }

    • com.peng.web

      • PersonServlet

        package com.peng.web;import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.beans.factory.annotation.Qualifier;
        import org.springframework.stereotype.Controller;import com.peng.pojo.Person;
        import com.peng.service.PersonService;@Controller(value = "personServlet")
        public class PersonServlet {@Autowired@Qualifier("personService")private PersonService personService;// @Right(right = "管理员")@Rightpublic void savePerson(Person person) {personService.savePerson(person);}}

    • 配置文件

      • applicationContext




缓存

  • 过程
    1. 需要缓存的的数据进行在内存中存放一份
    2. 再次用到时,先去内存中找,找到以后直接用,找不到就从数据库中找,并且往内存中存一份
    3. 如此反复进行12操作
  • 代码

    • com.peng.annotation

      • CacheData

        package com.peng.annotation;import java.lang.annotation.ElementType;
        import java.lang.annotation.Retention;
        import java.lang.annotation.RetentionPolicy;
        import java.lang.annotation.Target;/*** 数据缓存自定义注解* * @author Administrator* */
        @Target(ElementType.METHOD)
        @Retention(RetentionPolicy.RUNTIME)
        public @interface CacheData {String name();
        }

    • com.peng.aspect

      • DataCacheAspect

        package com.peng.aspect;import java.util.HashMap;
        import java.util.Map;import org.aspectj.lang.ProceedingJoinPoint;
        import org.aspectj.lang.annotation.Around;
        import org.aspectj.lang.annotation.Aspect;
        import org.aspectj.lang.annotation.Pointcut;
        import org.springframework.stereotype.Component;import com.peng.annotation.CacheData;
        import com.sun.istack.internal.logging.Logger;/*** 数据缓存切面* * @author Administrator* */
        @Component
        @Aspect
        public class DataCacheAspect {private Logger logger = Logger.getLogger(DataCacheAspect.class);private Map cache = new HashMap();// 创建一个切入点表达式的引用@Pointcut("execution(* *(..))")public void pc() {}// 环绕事务@Around(value = "pc() && @annotation(data)")public Object aroundSomething(ProceedingJoinPoint pjp, CacheData data)throws Throwable {System.out.println("================start=====================");logger.info("Execution of Cacheable method catched");// 产生缓存数据的key值,像是这个样子caching.aspectj.Calculator.sum(Integer=1;Integer=2;)StringBuilder keyBuff = new StringBuilder();// 增加类的名字keyBuff.append(pjp.getTarget().getClass().getName());// 加上方法的名字keyBuff.append(".").append(pjp.getSignature().getName());keyBuff.append("(");// 循环出方法的参数for (final Object arg : pjp.getArgs()) {// 增加参数的类型和值keyBuff.append(arg.getClass().getSimpleName() + "=" + arg + ";");// TODO:这里的数据可以缓存哦~.~}keyBuff.append(")");String key = keyBuff.toString();System.out.println(("Key = " + key));Object result = cache.get(key);if (result == null) {logger.info("Result not yet cached. Must be calculated...");result = pjp.proceed();logger.info("Storing calculated value '" + result + "' to cache");cache.put(key, result);} else {logger.info("Result '" + result + "' was found in cache");}System.out.println("==================end===================");return result;}
        }

      • MyAspect

        package com.peng.aspect;import org.aspectj.lang.JoinPoint;
        import org.aspectj.lang.ProceedingJoinPoint;
        import org.aspectj.lang.annotation.After;
        import org.aspectj.lang.annotation.AfterReturning;
        import org.aspectj.lang.annotation.AfterThrowing;
        import org.aspectj.lang.annotation.Around;
        import org.aspectj.lang.annotation.Aspect;
        import org.aspectj.lang.annotation.Before;
        import org.aspectj.lang.annotation.Pointcut;
        import org.springframework.stereotype.Component;import com.peng.annotation.Right;/*** 切面* * @author Administrator* */
        @Component
        @Aspect
        public class MyAspect {//// /**// * 给web层加入切面// */// 创建一个切入点表达式的引用@Pointcut("within(com.peng.web.*)")public void pc() {}// 前置事务@Before(value = "pc()")public void beforeSomething(JoinPoint jp) {System.out.println("前置事务");}//// 环绕事务@Around(value = "pc() && @annotation(right)")public Object aroundSomething(ProceedingJoinPoint pjp, Right right)throws Throwable {System.out.println("环绕事务---------aa----------------");Object obj = pjp.proceed();System.out.println("环绕事务----------ww--------------");return obj;}//// 后置事务@AfterReturning(value = "pc()")public void afterSomething(JoinPoint jp) {System.out.println("后置事务");}// 异常事务@AfterThrowing(value = "pc()", throwing = "t")public void exceptionSomething(JoinPoint jp, Throwable t) {System.out.println("异常事务");System.err.println("异常类:" + t.getClass());System.err.println("异常信息:" + t.getMessage());System.out.println("异常事务");}// 最终事务@After(value = "pc()")public void finallySomething(JoinPoint jp) {System.out.println("最终事务");}}

    • com.peng.dao

      • PersonDao

        package com.peng.dao;import org.springframework.stereotype.Repository;import com.peng.pojo.Person;@Repository(value = "personDao")
        public class PersonDao {public void savePerson(Person person) {System.out.println("存储了对象" + person);}}

    • com.peng.pojo

      • Person

        package com.peng.pojo;import org.springframework.beans.factory.annotation.Value;
        import org.springframework.stereotype.Component;@Component(value = "person")
        public class Person {@Value(value = "张三")private String name;@Value(value = "12")private int age;@Overridepublic String toString() {return "姓名:" + name + ",年龄:" + age;}
        }

    • com.peng.service

      • PersonService

        package com.peng.service;import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.beans.factory.annotation.Qualifier;
        import org.springframework.stereotype.Service;import com.peng.dao.PersonDao;
        import com.peng.pojo.Person;@Service(value = "personService")
        public class PersonService {@Autowired@Qualifier(value = "personDao")private PersonDao personDao;public void savePerson(Person person) {personDao.savePerson(person);}}

    • com.peng.test

      • Test

        package com.peng.test;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.peng.pojo.Person;
        import com.peng.web.PersonServlet;/*** 测试通用类* * @author Administrator* */
        public class Test {@org.junit.Testpublic void personModelTest() {// 获取Spring容器ClassPathXmlApplicationContext cpxac = new ClassPathXmlApplicationContext("applicationContext.xml");// 获取Person对象Person person = (Person) cpxac.getBean("person");// 获取PersonServlet对象PersonServlet personServlet = (PersonServlet) cpxac.getBean("personServlet");// 执行PersonServlet的savePerson方法personServlet.savePerson(person);}
        }

    • com.peng.web

      • PersonServlet

        package com.peng.web;import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.beans.factory.annotation.Qualifier;
        import org.springframework.stereotype.Controller;import com.peng.pojo.Person;
        import com.peng.service.PersonService;@Controller(value = "personServlet")
        public class PersonServlet {@Autowired@Qualifier("personService")private PersonService personService;// @Right(right = "管理员")@Rightpublic void savePerson(Person person) {personService.savePerson(person);}}

    • 配置文件

      • applicationContext





推荐阅读
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 解决java.lang.IllegalStateException: ApplicationEventMulticaster not initialized错误的方法和原因
    本文介绍了解决java.lang.IllegalStateException: ApplicationEventMulticaster not initialized错误的方法和原因。其中包括修改包名、解决service name重复、处理jar包冲突和添加maven依赖等解决方案。同时推荐了一个人工智能学习网站,该网站内容通俗易懂,风趣幽默,值得一看。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
author-avatar
谢云虎
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有