bean

69道必考spring面试题

旧时模样 提交于 2020-03-24 18:49:40
目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约2MB。 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 容器:Spring 包含并管理应用中对象的生命周期和配置。 MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。 异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。 3.

spring六种种依赖注入方式

佐手、 提交于 2020-03-24 14:18:29
平常的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.springDao =

SSM整合的配置信息

泄露秘密 提交于 2020-03-24 12:22:40
一、配置pom.xml文件    依赖如下: <!-- 统一管理jar包的版本号 --> <properties> <spring-version>4.3.2.RELEASE</spring-version> <spring-aspectj>1.9.2</spring-aspectj> <mybatis-version>3.4.6</mybatis-version> <myabtis-spring-version>1.3.2</myabtis-spring-version> <mysql-version>5.1.38</mysql-version> <c3p0-version>0.9.5.2</c3p0-version> <slf4j-log4j-version>1.7.25</slf4j-log4j-version> <jsp-api-version>2.1</jsp-api-version> <servlet-version>3.1.0</servlet-version> <jstl-version>1.2</jstl-version> <jackson-version>2.9.9</jackson-version> <junit-version>4.12</junit-version> <pagehelper-version>5.1.2</pagehelper-version

Spring ApplicationListener 理解

99封情书 提交于 2020-03-24 07:44:16
在开发时有时候需要在整个应用开始运行时执行一些特定代码,比如初始化环境,准备测试数据、加载一些数据到内存等等。 在 spring 中可以通过ApplicationListener来实现相关的功能,加载完成后触发contextrefreshedevent事件(上下文件刷新事件)。 ApplicationContext事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListener接口,可以实现ApplicationContext事件处理。 如果容器中有一个ApplicationListener Bean,每当ApplicationContext发布ApplicationEvent时,ApplicationListener Bean将自动被触发 。这种事件机制都必须需要程序显示的触发。 其中spring有一些内置的事件,当完成某种操作时会发出某些事件动作。比如监听ContextRefreshedEvent事件,当所有的bean都初始化完成并被成功装载后会触发该事件,实现ApplicationListener<ContextRefreshedEvent>接口可以收到监听动作,然后可以写自己的逻辑。 同样事件可以自定义、监听也可以自定义,完全根据自己的业务逻辑来处理。 内置事件 序号         Spring 内置事件 & 描述 1    

Spring 事件(2)- 自定义事件

南笙酒味 提交于 2020-03-24 07:34:50
Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Control – IOC) 理解依赖注入(DI – Dependency Injection) Bean XML 配置(1)- 通过XML配置加载Bean Bean XML 配置(2)- Bean作用域与生命周期回调方法配置 Bean XML 配置(3)- 依赖注入配置 Bean XML 配置(4)- 自动装配 Bean 注解(Annotation)配置(1)- 通过注解加载Bean Bean 注解(Annotation)配置(2)- Bean作用域与生命周期回调方法配置 Bean 注解(Annotation)配置(3)- 依赖注入配置 Bean Java配置 Spring 面向切面编程(AOP) Spring 事件(1)- 内置事件 Spring 事件(2)- 自定义事件 除了内置事件,Spring中也可以使用自定义事件。 怎样使用自定义事件: 创建事件类 - 扩展 ApplicationEvent 类,创建事件类。 创建发送类 - 发送类获取 ApplicationEventPublisher 实例发送事件。 创建监听类 - 实现 ApplicationListener 接口

Spring框架中Bean的生命周期

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-24 06:42:37
一、Bean的定义 Spring通常通过配置文件定义Bean。如: <?xml version=”1.0″ encoding=”UTF-8″?> <beans xmlns=”http://www.springframework.org/schema/beans” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd ”> <bean id=”HelloWorld” class=”com.pqf.beans.HelloWorld”> <property name=”msg”> <value>HelloWorld</value> </property> </bean> </beans> 这个配置文件就定义了一个标识为 HelloWorld 的Bean。在一个配置文档中可以定义多个Bean。 二、Bean的初始化 有两种方式初始化Bean。 1、在配置文档中通过指定init-method 属性来完成 在Bean的类中实现一个初始化Bean属性的方法,如init(),如:

SpringMVC整合Quartz实现定时任务以及Tomcat服务执行初始化定时任务

拟墨画扇 提交于 2020-03-24 03:14:57
1.导入quartz.jar包,或者pom.xml 配置对应的依赖: <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.6</version> </dependency> 2.在Web项目web.xml中配置quartz的配置文件加载路径: <servlet> <servlet-name>roundTrip</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/roundtrip-servlet.xml,classpath:spring/spring-quartz.xml</param-value> </init-param>

Shiro安全框架学习笔记

て烟熏妆下的殇ゞ 提交于 2020-03-23 23:03:17
一、Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权。Shiro在JavaSE和JavaEE项目中都可以使用。它主要用来处理身份认证,授权,企业会话管理和加密等。Shiro的具体功能点如下: (1)身份认证/登录,验证用户是不是拥有相应的身份; (2)授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; (3)会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的; (4)加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储; (5)Web支持,可以非常容易的集成到Web环境; Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率; (6)shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去; (7)提供测试支持; (8)允许一个用户假装为另一个用户(如果他们允许)的身份进行访问; (9)记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。 文字描述可能并不能让猿友们完全理解具体功能的意思。下面我们以登录验证为例

Spring依赖注入:注解注入

家住魔仙堡 提交于 2020-03-23 21:48:24
注解注入顾名思义就是通过注解来实现注入, Spring和注入相关的常见注解有Autowired、Resource、Qualifier、Service、Controller、Repository、Component。 1.@Autowired是自动注入,自动从spring的上下文找到合适的bean来注入 @Autowired(required=true)表示必须找到匹配的Bean,否则将报异常。 @Autowired默认按类型匹配注入Bean 在Spring中,@Autowired注入的类型可以是接口 比如,在Service层中注入Dao,如下示: @Autowired private UserDao userDao; 2.@Resource要求提供一个Bean名称的属性,如果属性为空,自动采用标注处的变量名和方法名作为Bean的名称 。 @Resource默认按名称匹配注入Bean 比如,在Controller层中注入Service,名称为Service的实现类,如下示 @Resource(name = "userServiceImpl") private UserService userService; 另外要注意,@Resource是java自带的注解,不是Spring中的注解。@Resource注解完整的包路径为import javax.annotation.Resource

Spring自动化装配bean

两盒软妹~` 提交于 2020-03-23 18:48:38
1. 背景 书接上文 Spring自动化装配bean 尽管在很多场景下通过组件扫描和自动装配实现Spring的自动化扫描配置是更为推荐的方式,但在有些情况下自动化扫描的方案行不通,如想要将第三方库中的组件装配到自己的应用中。在这种情况下必须通过显示 装配的方式。 显示装配有两种可选方案:Java和XML。JavaConfig是更好的方案:更强大、类型安全并对重构友好。因他就是Java代码。 2. 代码 & 解说 接口: CompactDisc.java package soundsystem; public interface CompactDisc { void play(); } 接口: MediaPlayer.java package soundsystem; public interface MediaPlayer { void play(); } SgtPeppers.java package soundsystem; public class SgtPeppers implements CompactDisc { private String title = "Sgt. Pepper's Lonely Hearts Club Band"; private String artist = "The Beatles"; @Override public void play(