spring原理

mybatis中使用到的设计模式

时光怂恿深爱的人放手 提交于 2019-12-02 16:16:32
Spring中的用到的设计模式大全 spring中常用的设计模式达到九种,我们举例说明: 第一种:简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。如下配置,就是在 HelloItxxz 类中创建一个 itxxzBean。 <beans> <bean id="singletonBean" class="com.itxxz.HelloItxxz"> <constructor-arg> <value>Hello! 这是singletonBean!value> </constructor-arg> </ bean> <bean id="itxxzBean" class="com.itxxz.HelloItxxz" singleton="false"> <constructor-arg> <value>Hello! 这是itxxzBean! value> </constructor-arg> </bean> </beans> 第二种:工厂方法(Factory Method )

面试题

China☆狼群 提交于 2019-12-02 16:13:39
1. 有哪些不同类型的IoC(依赖注入)方式 ? 解释说明下 构造器依赖注入 构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。 Setter方法注入 Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。 2. 最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao工作原理是什么? Dao接口里的方法,参数不同时,方法能重载吗?   Dao接口,就是人们常说的Mapper接口,接口的全限名,就是映射文件中的namespace的值,接口的方法名,就是映射文件中MappedStatement的id值,接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedStatement,举例:com.mybatis3.mappers.StudentDao.findStudentById,可以唯一找到namespace为com.mybatis3.mappers.StudentDao下面id = findStudentById的MappedStatement。在Mybatis中,每一个<select>、

Spring面试题

◇◆丶佛笑我妖孽 提交于 2019-12-02 16:05:27
1. 有哪些不同类型的 IoC( 依赖注入 ) 方式 ? 解释说明下 构造器依赖注入 构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。 Setter方法注入 Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。 2. 最佳实践中,通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 工作原理是什么 ? Dao 接口里的方法,参数不同时,方法能重载吗?   Dao 接口,就是人们常说的 Mapper 接口,接口的全限名,就是映射文件中的 namespace 的值,接口的方法名,就是映射文件中 MappedStatement 的 id 值,接口方法内的参数,就是传递给 sql 的参数。 Mapper 接口是没有实现类的,当调用接口方法时,接口全限名 + 方法名拼接字符串作为 key 值,可唯一定位一个 MappedStatement ,举例: com.mybatis3.mappers.StudentDao.findStudentById ,可以唯一找到 namespace 为 com.mybatis3.mappers.StudentDao 下面 id = findStudentById 的

Spring面试题

狂风中的少年 提交于 2019-12-02 16:04:36
1.有哪些不同类型的IOC(依赖注入)方式? 1.Set 注入 2.构造器注入 3.静态工厂的方法注入 4.实例工厂的方法注入 Setter 注入:对于习惯了传统 javabean 开发的程序员,通过 setter 方法设定依赖关系更加直观。 如果依赖关系较为复杂,那么构造子注入模式的构造函数也会相当庞大,而此时设值注入模式则更为简洁。如果用到了第三方类库,可能要求我们的组件提供一个默认的构造函数,此时构造子注入模式也不适用。 构造器注入:在构造期间完成一个完整的、合法的对象 。所有依赖关系在构造函数中集中呈现。依赖关系在构造时由容器一次性设定,组件被创建之后一直处于相对“不变”的稳定状态。只有组件的创建者关心其内部依赖关系,对调用者而言,该依赖关系处于“黑盒”之中。 静态工厂的方法注入:利用静态工厂方法可以把bean注入到IOC容器中。 在XML文件中配置bean时,要指定class的属性为工厂的类;factory-method属性指定工厂类中工厂方法,用于创建bean;constrctor-arg用于给工厂方法传递参数 实例工厂方法:将对象的创建过程封装到另外一个对象实例的方法里。 当客户端需要请求对象时 , 只需要简单的调用该实例方法而不需要关心对象的创建细节。 2.最佳实践中,通常一个Xml映射文件都会写一个Dao接口与之对应,请问,这个Dao工作原理是什么

spring security原理-学习笔记2-核心组件

≡放荡痞女 提交于 2019-12-02 14:41:57
核心组件 AuthenticationManager,ProviderManager和AuthenticationProvider AuthenticationManager只是一个接口,实际中是如何运作的?如果我们需要检查多个身份验证数据库或不同身份验证服务(如数据库和LDAP服务器)的组合,该怎么办? Spring Security中的默认实现为ProviderManager,ProviderManager本身不处理身份验证请求,它会委托给AuthenticationProvider列表进行处理,每个列表都会被查询以查看它是否可以执行认证。每个提供程序将抛出异​​常或返回完全填充的Authentication对象。 org.springframework.security.authentication.ProviderManager内部实现: public Authentication authenticate(Authentication authentication) throws AuthenticationException { 遍历List<AuthenticationProvider> 列表{ if(provider.supports(toTest)){ result = provider.authenticate(authentication); this

Spring MVC 各个层之间的理解

允我心安 提交于 2019-12-02 11:22:49
我很喜欢一句话 语言不是问题 就像是汉语和英语一样 语言只是让别人明白你的意思 只要把框架的原理记住 就可以开发 1、dao层 dao层主要做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,dao层的设计首先是设计dao层的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可以再模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,dao层的数据源配置,以及有关数据库连接参数都在Spring配置文件中进行配置。 2、service层 service层主要负责业务模块的应用逻辑应用设计。同样是首先设计接口,再设计其实现类,接着再Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用service接口来进行业务处理。service层的业务实,具体要调用已经定义的dao层接口,封装service层业务逻辑有利于通用的业务逻辑的独立性和重复利用性。程序显得非常简洁。 3、controller层 controller层负责具体的业务模块流程的控制,在此层要调用service层的接口来控制业务流程,控制的配置也同样是在Spring的配置文件里进行,针对具体的业务流程,会有不同的控制器。我们具体的设计过程可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块。这样不仅使程序结构变得清晰,也大大减少了代码量。 4

Spring Boot实战之定制自己的starter

烂漫一生 提交于 2019-12-02 11:17:53
本文首发于个人网站,原文地址:http://www.javaadu.online/?p=535,如需转载,请注明出处 在学习Spring Boot的过程中,接触最多的就是starter。可以认为starter是一种服务——使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boot自动通过classpath路径下的类发现需要的Bean,并织入bean。举个例子, spring-boot-starter-jdbc 这个starter的存在,使得我们只需要在BookPubApplication下用 @Autowired 引入DataSource的bean就可以,Spring Boot会自动创建DataSource的实例。 这里我们会用一个不太规范的starter展示Spring Boot的自动配置的运行原理。 Spring Boot的自动配置、Command-line Runner 一文中曾利用StartupRunner类在程序运行启动后首先查询数据库中书的数目,现在换个需求: 在系统启动后打印各个实体的数量 。 How Do 新建一个模块 db-count-starter ,然后修改db-count-starter模块下的pom文件,增加对应的库。 <dependencies> <dependency> <groupId>org

spring MVC、mybatis配置读写分离

无人久伴 提交于 2019-12-02 08:13:06
1.环境: 3台数据库机器,一个master,二台slave,分别为slave1,slave2 2.要实现的目标: ①使数据写入到master ②读数据时,从slave1和slave2中读取 以此来实现数据库的读写分离 3.原理: 使用mysql驱动自带的replicationDriver来实现,replicationDriver简单来说就是存在两个Connection,一个masterConnection,一个slaveConnection; 当setReadonly(true)就把currentConnection=slaveConnection,反之设置为masterConnection 4.实现步骤: ①jdbc.properties ## 使用ReplicationDriver而不是driver jdbc.driverClassName=com.mysql.jdbc.ReplicationDriver ## 使用的是jdbc:mysql:replication:// jdbc.url=jdbc:mysql:replication://master:3306,slave1:3306,slave2:3306/test2?characterEncoding=utf8 jdbc.username=root jdbc.password=123456 ②使用spring的事物

spring MVC配置详解

丶灬走出姿态 提交于 2019-12-02 07:13:49
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了。不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理。   一、Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0)   1. jar包引入   Spring 2.5.6:spring.jar、spring-webmvc.jar、commons-logging.jar、cglib-nodep-2.1_3.jar   Hibernate 3.6.8:hibernate3.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、antlr-2.7.6.jar、commons-collections-3.1、dom4j-1.6.1.jar、javassist-3.12.0.GA.jar、jta-1.1.jar、slf4j-api-1.6.1.jar、slf4j-nop-1.6.4.jar、相应数据库的驱动jar包 SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是DispatcherServlet

STS功能介绍

試著忘記壹切 提交于 2019-12-02 06:21:22
前言 俗话说:工欲善其事必先利其器,要学习Spring源码也是如此 学习源码的设计思路及实现原理,一定要深入学习其中的类继承和接口实现的关系 因此这一节简单来看一下Spring IDE - STS(全称:Spring-Tool-Suite)的使用 目前我们重点介绍如何将Spring项目加入到IDE管理中,并查看类继承关系 以便在日后的学习过程中,可以对Spring源码的集成结构有一个直观清晰的理解 下载并安装STS 两种方式: 安装Eclipse对应版本的STS插件 直接下载基于Eclipse的STS IDE安装程序 这里我们采用基于Eclipse的STS IDE安装程序进行安装 IDE下载网站:https://spring.io/tools/sts/all 1,选择基于Eclipse的STS下载安装文件: 下载并安装后,启动IDE: 注意:此时导入Spring工程会报错,原因是缺少Eclipse的Groovy插件 2,安装Eclipse的groovy 1)安装groovy Brave:~ Brave$ brew install groovy 查看版本号 Brave:~ Brave$ groovy -v Groovy Version: 2.4.12 JVM: 1.8.0_51 Vendor: Oracle Corporation OS: Mac OS X 2)安装eclipse