热门标签 | 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学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 解决java.lang.IllegalStateException: ApplicationEventMulticaster not initialized错误的方法和原因
    本文介绍了解决java.lang.IllegalStateException: ApplicationEventMulticaster not initialized错误的方法和原因。其中包括修改包名、解决service name重复、处理jar包冲突和添加maven依赖等解决方案。同时推荐了一个人工智能学习网站,该网站内容通俗易懂,风趣幽默,值得一看。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
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社区 版权所有