bean

新SSM框架整合

风格不统一 提交于 2020-03-02 14:24:59
1.父工程ssmbuild *【链接:https://blog.kuangstudy.com/index.php/archives/487/ 】 * 导入pom依赖,资源预留,编码: <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency>​ <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.2.1</version> </dependency>​ <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> </dependency>​ <dependency> <!--jsp表达式的依赖--> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId>

SSM整合步骤

怎甘沉沦 提交于 2020-03-02 14:03:24
SSM- CRUD SSM : SpringMVC+Spring+Mybatis Create (新建) +Retrieve (查询) +Update(更新)+Delete(删除) 功能点 1:分页 2:数据校验:JQuery前端校验+JSR后端校验。 3:ajax 4:Rest风格URL:使用HTTP协议请求方式的动词,来表示对对资源的操作:GET(查询)、POST(新增)、PUT(修改)、DELETE(删除)。 技术点 1:基础框架-SSM (SpringMVC+Spring+MyBatis) 2:数据库-MySQL 5 3:前端框架-bootstrap快速搭建简洁美观的前端界面。 4:项目的依赖管理-Maven。 5:分页插件-pagehelper 6:逆向工程-MyBatis Generator 基础环境搭建 1:创建一个maven工程 2:引入项目依赖的jar包 spring springMVC Mybatis 数据库连接池,驱动包 其它包[ jstl , servlet-api , junit ] maven 配置文件增加配置 阿里云下载镜像 <!-- 中央仓库阿里云镜像下载--> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http:/

Spring的工厂Bean

*爱你&永不变心* 提交于 2020-03-02 11:41:38
Spring的工厂Bean是Spring的一种特殊Bean,这种工厂Bean必须实现 FactoryBean接口 。 FactoryBean接口是工厂Bean的标准接口,实现该接口的Bean通常只能作为工厂Bean使用。当我们将工厂Bean部署在容器中,并通过getBean()方法来获取工厂Bean时,容器不会返回FactoryBean实例,而是返回FactoryBean的产品。 FactoryBean接口 提供如下三个方法: 接口 描述 T getObject() 实现该方法负责返回该工厂Bean生成的Java实例 Class<?> getObjectType() 实现该方法返回该工厂Bean生成的Java实例的实现类 boolean isSingleton() 实现该方法表示该工厂Bean生成的Java实例是否为单例模式 实现FactoryBean接口的Bean无法作为正常Bean使用。配置FactoryBean与配置普通Bean的定义没有区别,但当客户端对该Bean id请求时,容器返回该FactoryBean的产品,而不是返回该FactoryBean本身。 当我们确实需要获取FactoryBean本身时,可以在Bean id前加&符号。 对于初学者而言,可能无法体会到工厂Bean的作用。实际上,FactoryBean是Spring中非常有用的一个接口

Spring注解

瘦欲@ 提交于 2020-03-02 07:47:48
1. @Component 通知Spring为这个类创建bean。通过组件扫描实现,组件扫描默认不启动。 e.g. @Component(“testName”) 为当前bean指定名称。不指定则默认为类名的首字母小写 2. @ComponentScan 通知Spring扫描组件,默认扫描与当前类相同的包。 可指定basePackages属性,指定包名 可指定basePackageClasses属性,指定类 3. @SpringJUnit4ClassRunner 在测试开始的时候自动创建Spring的应用上下文 4. @ContextConfiguration 通知Spring在当前类中加载配置。e.g. @ContextConfiguration(class=OneConfigClass.class) 5. @Named @Component的替代方案。大多数场景中可以互相替换 6. @Autowired 自动装配 可以将属性required设置为false,否则匹配不到bean时会抛出异常,需要进行null检查 为变量赋值 @Autowired Person person; 为方法赋值 @Autowired public goToSchool(Person person) 7. @Inject 自动装配,大多数场景下与autowired可以互相替换 8.

Spring源码学习笔记(7)

孤者浪人 提交于 2020-03-02 06:25:55
Spring源码学习笔记(七)    前言--     最近花了些时间看了《Spring源码深度解析》这本书,算是入门了Spring的源码吧。打算写下系列文章,回忆一下书的内容,总结代码的运行流程。推荐那些和我一样没接触过SSH框架源码又想学习的,阅读郝佳编著的《Spring源码深度解析》这本书,会是个很好的入门       写前说句话, 开篇不尴尬 ---- 接下的这一篇当中, 我们将来回顾 Spring 中 AOP 功能的实现流程。 早上精力充沛, 开始新一天的学习 \(^o^)/~        接触过 Spring 框架的同学都知道, Spring 中使用的两个功能无非就是依赖注入的 DI 以及面向切面编程的 AOP, 其中 AOP 又包括了动态 AOP 和静态 AOP 两个方向。 首先,我们来看看 Spring 是如何实现我们最常接触到的动态 AOP 的。 动态AOP     启用 Spring 的 AOP 功能, 需要我们在 Spring 的配置文件中添加 <aop:aspectj-autoproxy/> 。我们将从这个配置为入口看看 AOP 的实现过程。      在 AopNamespaceHandler 中, 有一下初始化代码: 1 public class AopNamespaceHandler extends NamespaceHandlerSupport {

spring依赖注入的四种方式

爱⌒轻易说出口 提交于 2020-03-02 03:09:30
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类 实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该 对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作 不由我们程序员来做而是交给spring容器来做。 spring有多种依赖注入的形式,下面仅介绍spring通过xml进行IOC配置的方式: Set注入 这是最简单的注入方式,假设有一个SpringAction,类中需要实例化一个SpringDao对象,那么就可以定义一个private的SpringDao成员变量,然后创建SpringDao的set方法(这是ioc的注入入口): Java代码 package com.bless.springdemo.action; public class SpringAction { //注入对象springDao private SpringDao springDao; //一定要写被注入对象的set方法 public void setSpringDao(SpringDao springDao) { this

Spring NoSuchBeanDefinitionException原因分析

若如初见. 提交于 2020-03-02 00:54:33
摘要:本文译自Eugen Paraschiv文章Spring NoSuchBeanDefinitionException 原文链接: http://www.baeldung.com/spring-nosuchbeandefinitionexception 感谢Eugen Paraschiv对此所做的研究。 概述 在本文中,我将通过实例向你展示Spring 中org.springframework.beans.factory.NoSuchBeanDefinitionException 出现的原因。如果BeanFactory在Spring Context中没有找到bean的实例,就会抛出这个常见的异常。   Cause: No qualifying bean of type […] found for dependency 这个异常的出现一般是因为需要注入的bean未定义 有一个类BeanA.java package com . csdn . training . model ; @Component public class BeanA { @Autowired private BeanB beanB ; } 有一个类BeanB.java package com . csdn . training . service ; @Component public class BeanB {

spring定时器用Annotation实现

余生长醉 提交于 2020-03-01 21:37:32
1.ApplicationContext.xml配置 a)、需要在xmlns里面加入: xmlns:task="http://www.springframework.org/schema/task" b)、在xsi:schemaLocation中加入 http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd (别忘了最后的引号) c)、加入配置  <context:component-scan base-package="com.netease.lee" /><!--需要扫描的包--> <context:annotation-config /><!--开启注解--> <task:annotation-driven/> <!-- 这句是重点 定时器开关--> d)、web.xml <listener>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> < /listener> 2.完全注解方式 @Service public class AnnotationQuartz {  @Scheduled

spring tranaction 事务入门

删除回忆录丶 提交于 2020-03-01 15:00:28
一、事务四个属性 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。事务必须是使 数据库 从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对 数据库 中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。 二、事务的重要性 打个最简单的比方吧,A和B两人之间的支付宝转账问题,A向B转账50RMB,正常的结果是,A - 50 并且 B + 50; 但如果是下面这种情况,那就杯具了,A - 50 成功,而B + 50 失败。这样一来岂不是 A亏大了!谁还敢随意转账?就算是首富,也不敢随意转账O(∩_∩)O哈! 所以,在进行 A - 50 和 B + 50 需要添加事务管理。 三、先看下没有加事务的Demo, 看完就知道事务的重要性啦~ (1)、整体结构、 (2)、jar 包 (3)、SQL语句 创建数据库 create database spring; 建立表 create table countmoney

shiro实现session共享

旧街凉风 提交于 2020-03-01 14:29:17
session共享:在多应用系统中,如果使用了负载均衡,用户的请求会被分发到不同的应用中,A应用中的session数据在B应用中是获取不到的,就会带来共享的问题。 假设:用户第一次访问,连接的A服务器,进行了登录操作进入了系统,当用户再次操作时,请求被转发到了B服务器,用户并没有在B进行登录,此时用户又来到了登录页面,这是难以理解和接受的,这就引出了session共享。 对于shiro框架如何实现session的共享呢?shiro的共享分为两个方面,一个是session的共享,一个是cache的共享。接下来结合redis分别来实现这两个方面。 一.Session的共享 shiro提供了自己的会话管理器sessionManager,其中有个属性叫sessionDao它来处理所有的会话信息。 对于sessionDao,shiro也提供了自己的实现,常用的是ehcache的实现。Ehcache是jvm级别的,多个应用就会产生多个缓存示例,无法做到信息跨进程共享。要实现共享,就要重写sessionDao,通过实现我们自己的Dao,做到同一个会话信息的唯一性。 看下面一幅类图: 1.继承shiro提供的抽象sessionDao,重写create,read,delete等方法。 2.考虑系统的扩展性,我们抽象出一个数据仓储接口,并提供一个redis的实现方式