1. github地址 https://github.com/zhwj184/springdemo,后续再加入其他内容
springdemo ========== spring3的IOC,AOP,JDBC,orm等各个模块的使用示例集锦,可以作为入门的spring学习示例教程 在org.springweb.context.test包下 1.IOC * spring框架设计理念(POJO化) * 1.IOC 概念,作用,优点 Donnot call me,we will call you. beanfactory,applicationcontext(事件发布,国际化支持) * 2.注入方法 setter,construtor(参数太多,可变参数列表),接口注入 * 3.注入类型 bean,基本类型,map,list等 * 4.注入方式 byname,bytype,default * 5.annotation(autowired,resource,@Qualifier) * 6.bean的生命周期 init-method,destroy-method,initiableBean, DisposableBean,lasyinit,singleton,prototype @PostConstruct @PreDestroy * 7.postProcessBean * 8.IOC 应用场景,datasouce配置,线程池配置, * 9.工厂方法与 FactoryBean * 10 messagesource,propertyplaceholder 执行SpringContextIOCMain main函数 public class SpringContextIOCMain { public static void main(String[] args) { //编码方式,xml配置方式,properties方式 //FileSystemXmlApplicationContext ClassPathXmlApplicationContext XmlWebApplicationContext ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml"); HelloService helloSerice = (HelloService) context.getBean("helloService"); helloSerice.sayHello(); HelloService helloSerice1 = (HelloService) context.getBean("helloService"); helloSerice1.sayHello(); //remoteReadServicepostProcessor // RemoteReadService remotePostProcess = (RemoteReadService) context.getBean("remoteReadServicepostProcessor"); // System.out.println(remotePostProcess.getCon()); // //messageSource // MessageSource messageSource = (MessageSource) context.getBean("messageSource"); // System.out.println(messageSource.getMessage("loginfail", new Object[]{"a","b"}, Locale.ENGLISH)); // System.out.println(messageSource.getMessage("loginfail", new Object[]{new Date().toString()}, Locale.getDefault())); } } 2.AOP 主要内容和示例 * 1.AOP概念,应用场景(安全检查,日志记录,监控,事务管理) * 2.实现方式(动态代理(所有实现横切关注点的逻辑都得实现InvokationHandler接口),动态字节码增强(生成子类,将横切逻辑加到子类中,不需要实现接口,但是父类不能为final)) * spring 默认用动态代理,不能再用字节码(ASM,CGLIB)增强 * 3. joinpoint(切入点),pointcut(切入点表达式,正则,方法名等),advice(before advice,after advice(after return advice, * after throwing advice, after finally advice,),around advice(filter)),spring AOP 使用proxyfactory完成织入工作。 * 4. 实现原理:代理模式, 动态代理示例,cglib示例 * 5. PointCut,JdkRegexpMethodPointcut,NameMatchMethodPointcut * 6. advice AfterAdvice BeforeAdvice AspectJAroundAdvice ThrowsAdvice AfterReturningAdvice(批处理方法状态插入数据库) * 7. advisor Advisor DefaultPointcutAdvisor order * 9. 其他 AspjectJ ajc编译器,编译时织入;JBoss AOP使用自定义的classloader;spring aop使用ProxyFactory ProxyFactory基于类的代理 AOPProxy AOPProxyFactory * 10. proxyFactoryBean * 11. 自动代理 基于BeanPostProcessor, BeanNameAutoProxyCreator和DefaultAdvisorAutoProxyCreator(针对advisor,自动扫描xml中所有的advisor配置生成代理对象)两个自动代理实现 * 12. TargetSource HotSwappableTargetSource(实现数据源替换,热备呼唤) PrototypeTargetSource SingletonTargetSource * * 13. aspectj annotation 执行SpringContextAOPMain main函数 public class SpringContextAOPMain { public static void main(String[] args) { //编码方式,xml配置方式,properties方式 //FileSystemXmlApplicationContext ClassPathXmlApplicationContext XmlWebApplicationContext // ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml"); // HelloService helloSerice = (HelloService) context.getBean("helloService"); // helloSerice.sayHello(); // //基于proxyFactory 的基于接口代理实现 ProxyFactory weaver = new ProxyFactory(new SpringHelloServiceImpl()); // weaver.setInterfaces(interfaces); // weaver.setExposeProxy(true); NameMatchMethodPointcutAdvisor advisor = new NameMatchMethodPointcutAdvisor(); advisor.setMappedName("sayHello"); advisor.setAdvice(new ProxyFactoryProxyAdvisor()); weaver.addAdvisor(advisor); HelloService proxyObject =(HelloService)weaver.getProxy(); proxyObject.sayHello(); System.out.println(proxyObject.getClass()); //基于proxyFactory的基于类的代理实现 ProxyFactory weaver1 = new ProxyFactory(new HelloServiceWithoutInterface()); // weaver.setInterfaces(interfaces); NameMatchMethodPointcutAdvisor advisor1 = new NameMatchMethodPointcutAdvisor(); advisor1.setMappedName("sayHello"); advisor1.setAdvice(new ProxyFactoryProxyAdvisor()); weaver1.addAdvisor(advisor1); HelloServiceWithoutInterface proxyObject1 =(HelloServiceWithoutInterface)weaver1.getProxy(); proxyObject1.sayHello(); System.out.println(proxyObject1.getClass()); //默认基于接口的代理,可以通过设置下面两个强制基于类的代理 weaver.setProxyTargetClass(true); SpringHelloServiceImpl proxyObject2 =(SpringHelloServiceImpl)weaver.getProxy(); proxyObject2.sayHello(); System.out.println(proxyObject2.getClass()); //proxyFactoryBean FactoryBean的proxy代理实现 xml配置AOP ApplicationContext context = new ClassPathXmlApplicationContext("aopbean.xml"); HelloService helloService = (HelloService) context.getBean("myproxefactorybean"); helloService.sayHello(); HelloServiceImpl HelloServiceImpl = (HelloServiceImpl) context.getBean("myproxefactorybean"); HelloServiceImpl.sayHello(); //自動代理實現 HelloService autoProxyHelloService = (HelloService) context.getBean("autoproxyhelloService"); autoProxyHelloService.sayHello(); } } 3. 基于AspectJ的AOP示例,执行AspectjSpringContextAOPMain main函数 public class AspectjSpringContextAOPMain { public static void main(String[] args) { //proxyFactoryBean FactoryBean的proxy代理实现 xml配置AOP ApplicationContext context = new ClassPathXmlApplicationContext("aopbeanaspectJ.xml"); UserService service =(UserService) context.getBean("userService"); service.print(); NextService NextService =(NextService) context.getBean("NextService"); NextService.print(); } } 4. spring DAO ,包括JDBCTemplate,集成ibatis和hibernate示例 * 1.DAO Data acess object * 2. DataAccessException 数据库访问如何封装底层各个数据库的异常信息 * 统一数据访问异常体系 * 3. jdbc API JDBCTemplate(封装所有jdbc访问代码,统一格式与规范 SimpleJdbcOperations * SimpleJdbcTemplate,NameParameterJdbcTemplate * 4. DataSource DriverManagerDataSource SimpleDriverDataSource c3p0 dbcp * 4. 设计模式:模板方法 * 5. 基于操作对象的访问方式 SqlQuery,SqlUpdate,SqlCall,SqlFunction * * RDBMSOperation * * * * 6.ORM: ibatis,hibernate hibernateTemplate demo * 7. JDO java data object 对象持久化规范 JPA java持久化API * 8 扩展 FTPClientTemplate HttpClientTemplate * 执行 SpringContextDAOMain main函数 public class SpringContextDAOMain { public static void main(String[] args) throws IOException { ApplicationContext context = new ClassPathXmlApplicationContext("jdbcbean.xml"); JdbcTemplateTest jdbcTemplateTest = (JdbcTemplateTest) context.getBean("jdbctest"); // jdbcTemplateTest.query(); // jdbcTemplateTest.insert(); // jdbcTemplateTest.delete(); // jdbcTemplateTest.insertBatch(); // jdbcTemplateTest.update(); // jdbcTemplateTest.updataBatch(); // jdbcTemplateTest.create_or_dropTable(); // jdbcTemplateTest.callpreparecall(); //ibatis //spring xml声明配置方式 MyIbatisTest myIbatisTest = (MyIbatisTest) context.getBean("myIbatisTest"); myIbatisTest.query(); //ibatis 编码方式 SqlMapClient sqlmap = SqlMapClientBuilder.buildSqlMapClient(Resources.getResourceAsReader("ibatis/mysql-sqlmap-config.xml")); SqlMapClientTemplate sqlMapClientTemplate = new SqlMapClientTemplate((DataSource) context.getBean("dbcpDataSource"),sqlmap); Map<String,Object> param = new HashMap<String,Object>(); param.put("a", 2); List<Dataobject> list = sqlMapClientTemplate.queryForList("test.query", param); System.out.println(list); //hibernate //从Spring容器中请求SessionFactory ApplicationContext hibernate = new ClassPathXmlApplicationContext("jdbchibernatebean.xml"); SessionFactory factory =(SessionFactory)hibernate.getBean("sessionFactory"); Session session = factory.openSession(); //query Dataobject data = (Dataobject)session.get(Dataobject.class, 2); System.out.println(data); //insert Dataobject data1 = new Dataobject(); data1.setA(14); data1.setB("12bbb"); Serializable s = session.save(data1); session.flush(); System.out.println(s); Dataobject data3 = (Dataobject)session.get(Dataobject.class, 12); System.out.println(data3); //update data1.setA(12); data1.setB("123bbb"); session.update(data1); data3 = (Dataobject)session.get(Dataobject.class, 12); System.out.println(data3); //session事务 Transaction transaction = session.beginTransaction(); session.save(data1); session.save(data3); transaction.commit(); session.close(); } } 5. spring MVC,用eclipse jetty插件直接执行该工程即可。具体查看相关配置web.xml和mv-dispatch-servlet.xml配置,有jsp和velocity支持 * 1. servlet,jsp, mvc * 2. spring mvc; DispatchServlet * HandlerMapping,Controller,ViewResolver,view * 3. WebApplicationContextUtils * * 4. HandlerMapping order SimpleUrlHandlerMapping( href="requestpath" -> bean name="/requestpath") * ControllerClassNameHandlerMapping DefaultAnnotationHandlerMapping * * 5. Controller (AbstractController,MultiActionController),BaseCommandController,AbstractWizardFormController,ParameterizableViewController, * UrlFilenameViewController,ServletForwardingController,ServletWrappingController * * 6. ViewResolver InternalResourceViewResolver(默认,jsp),FreeMarkerViewResolver,VelocityViewResolver,JasperReportsViewResolver * XsltViewResolver MultiPartResolver, order * jsp,velocity demo * * 7. view InternalResourceView JstlView VelocityView ... * * 8 MultiPartResolver(demo), HandlerInteceptor, HandlerAdaptor,HandlerExceptionResolver,LocalResolver,ThemeResolver * 9 HandlerAdaptor HttpRequestHandlerAdapter SimpleControllerHandlerAdapter AnnotationMethodHandlerAdapter * 10 HandlerInteceptor WebContentInterceptor UserRoleAuthorizationInterceptor HandlerInterceptorAdapter * 11 HandlerExceptionResolver SimpleMappingExceptionResolver * 12 LocalResolver FixedLocaleResolver SessionLocaleResolver AcceptHeaderLocaleResolver CookieLocaleResolver LocaleChangeInterceptor * 13 ThemeResolver FixedThemeResolver resolveThemeName CookieThemeResolver ThemeChangeInterceptor * * 14 基于注解的mvc 6. spring与j2ee的相关集成,示例包括spring mail和quartz,其他方面请查看相关博客介绍 * 1. jndi JndiTemplate JndiObjectFactoryBean http://liuzidong.iteye.com/blog/962841 * 2. jms JmsTemplate * 3. Email * 4. 任务调度和线程池 Quartz,ScheduledTimeTask * 5. 远程调用方案 RMI,HTTP,HESSION,Burlap,WebService(JAX-RPC,JAX-WS),jms * http://zhwj184.iteye.com/admin/blogs/1683252 rmi * http://zhwj184.iteye.com/admin/blogs/1683626 webservice * http://www.ibm.com/developerworks/cn/java/wa-spring4/ jms * http://chenjumin.iteye.com/blog/234897 hession * http://victor-jan.iteye.com/blog/823550 httpinvoker * http://topmanopensource.iteye.com/blog/350105 burlap
相关推荐
使用的是springcloud的Hoxton.SR8版本,idea工程,下载即可使用。适用于入门快速看效果。整合了eureka(注册中心)、Zuul(网关)、Feign(本地化的远程调研、负载均衡)、hystrix(熔断器)。笔记可查看:...
Spring Cloud Nacos入门工程示例。文档详见: https://blog.csdn.net/c123m/article/details/107598353
官方示例工程jdk代码环境为jdk-17,由于我本地环境为jdk-8,所以调整了示例工程中的依赖版本信息,使示例工程能在jdk-8的环境下正常运行。本示例在官方示例的基础上,添加了FeignClient初始化的方式,共计2种供参考...
2018年11月22日博客资源,spring和maven管理spring入门程序,里面是博客中的工程。
本人编写的13个基于springcloud的微服务示例程序,每一个都给出了代码分析,供大家入门学习使用,所有示例都是Maven工程,使用sts开发
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同...
SpringBoot + SpringCloud + SpringSecurity学习过程中的二进制汇总,沉淀记录下学习历程 1.知识点图谱 所有博文集中发布在个人博客网站: 大致规划的内容包括以下章节,希望能用半年到一年(严重超期)的时间完成....
学习spring cloud的demo工程,以spring boot为基础,学习java微服务,并且连同docker容器一起使用。 总结: spring-cloud是以spring-boot为基础开发的,是一种微服务框架, spring-boot是一个快速开发的框架,他并不...
这是一个Spring框架应用示例工程,里面写了大量的注释,对于我们理解和掌握Spring的一些关键特性是非常有帮助的。 这也是我学习和理解Spring的一个过程,分享出来给有这方面需求的同学快速入门,希望对您有所帮助,...
oauth2-jwt这个工程更贴近于实际工程,可以此为基础扩展项目代码 oauth2-jwt-sign工程说明 jwt认证协义,使用签名,认证和资源服务器签名相同("123") jwt-auth-server 认证服务工程 token使用jwt、签名来认证token,...
基于springboot的guacamole客户端示例工程,可在此基础上做扩展,通过guacamole api对guacd发送命令。
这是一个maven工程,整合springMVC和mybits加mysql实现的一个简单的web访问的demo。简单实现的功能是:mysql中有user表,从页面访问,然后springMVC的控制类负责控制跳转,最终执行dao类对应的mybits配置文件中...
第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...
大多数IT 组织都必须解决三个主要问题:1.帮助组织减少成本 2.增加并且保持客户 3....本文是在其基础上,采用Spring对其中间层(业务层)进行改造。使开发量进一步减少,同时又拥有了Spring的一些好处…
第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...
(读者注:其实这个应该叫做很基础的入门一下下,如果你看过Hibernate了那这个就非常的简单) (再加一条,其实大家可以看官方的教程更好些:http://mybatis.github.io/mybatis-3/,而且如果英文不是很好的那就看...
Software Saturdays是由Purdue大学工程学院和Purdue IEEE学生分会共同主办的活动参与者。 它的目的是教工程师现代软件开发技巧,无论参与者参加哪个行业,这些技巧都是有用的。 这个Spring学期,我们将教授使用VueJS...
第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...
struts2、spring、hibernate框架的入门级示例,没有用到servlet技术
学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定...