bean

java常见笔试题

為{幸葍}努か 提交于 2020-04-03 05:24:12
JAVA 相关基础知识 1 、面向对象的特征有哪些方面 1. 抽象 : 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2. 继承 : 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3. 封装 : 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性 : 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2 、 String 是最基本的数据类型吗 ? 基本数据类型包括 byte 、 int 、 char 、 long 、 float 、 double 、 boolean 和 short 。

代理匹配浅谈spring——自动创建代理(八)

一曲冷凌霜 提交于 2020-04-02 21:45:16
本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~ 浅谈spring——切面(七) 这一节提到平日要借助ProxyFactoryBean建创织入切面的代理子类,虽然对标目类进行了强增,但是增加了很多额定的配置。 spring供给主动代理机制,可以帮我们从琐烦的工作中解救出来。其实现机制借助于BeanPostProcessor的主动代理建创器的实现类。 主动代理建创器的承继关系: 代理器有三类: 1. 基于Bean的名字的主动代理建创器,例如BeanNameAutoProxyCreator.java 2. 基于Advisor(切面)匹配机制的主动代理建创器。对spring容器中的全部的Advisor扫描,并将其应用到匹配的Bean中。例如DefaultAdvisorAutoProxyCreator.java 3. 基于Bean中的AspjectJ解注签标的主动代理建创器,例如AnnotationAwareAspectJAutoProxyCreator.java 全部的主动代理建创器,都是实现了BeanPostProcessor。spring容器在实例化Bean时,BeanPostProcessor会对其加工,对满意匹配则规的Bean主动建创代理对象。 BeanNameAutoProxyCreator代码示例: xml配置文件 <?xml version="1.0

SpringAOP在web应用中的使用

帅比萌擦擦* 提交于 2020-04-02 16:12:39
之前的aop是通过手动创建代理类来进行通知的,但是在日常开发中,我们并不愿意在代码中硬编码这些代理类,我们更愿意使用DI和IOC来管理aop代理类。Spring为我们提供了以下方式来使用aop框架 一、以声明的方式配置AOP(就是使用xml配置文件) 1.使用ProxyFactoryBean的方式: ProxyFactoryBean类是FactoryBean的一个实现类,它允许指定一个bean作为目标,并且为该bean提供一组通知和顾问(这些通知和顾问最终会被合并到一个AOP代理中)它和我们之前的ProxyFactory都是Advised的实现。 以下是一个简单的例子:一个学生和一个老师,老师会告诉学生应该做什么。 public class Student { public void talk() { System.out.println("I am a boy"); } public void walk() { System.out.println("I am walking"); } public void sleep() { System.out.println("I want to sleep"); } } 老师类 public class Teacher { private Student student; public void tellStudent(){

spring注解

不羁岁月 提交于 2020-04-02 15:10:09
Spring中bean就是java的所有类,spring提供一个容器将其中的所有bean串起来。 一、spring的注入方式: 1.通过bean.xml等配置文件;实例化bean的过程还需要AplicationContent 实现。 public static void main(String[] args) { String[] locations = {"beans.xml"}; ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(locations); Boss boss = (Boss) ctx.getBean("boss"); System.out.println(boss); ctx.destroy();// 关闭 Spring 容器,以触发 Bean 销毁方法的执行 } 2.通过注解的方式 @Autowired 标记引用 @Service 标记实现接口的类 它们之间的映射关系通过Spring内置实现。注解的的优点是标示后即可用,省去了实例化ApplicationContent的操作,实现了自动完成(需要增加component-scan配置)。 二、相关注解说明 1.@Service注释表示定义一个bean,自动根据bean的类名实例化一个首写字母为小写的bean

SpringBoot自动配置原理

孤者浪人 提交于 2020-04-02 13:57:53
SpringBoot自动配置原理: 1. Condition接口: Condition接口是spring4.0之后提供的接口,增加条件判断功能,用于选择性的创建Bean对象到spring容器中。 在Condition接口有一个方法:matches(),该方法用于判断,当加入了相关坐标依赖后,返回值为true,没有加入依赖, 则返回值为false。 2.相关注解说明: @Configuration:标记该类是一个配置类 @Bean:用在方法上,将方法的返回值(一般是Bean)注册给spring容器管理 @Conditional(OnCondition.class):用在方法上,用于判断,如果类OnCondition中的方法matches()返回值为true, 则执行下面的代码,否则不执行 @Import: import注解用于导入其他的配置,让spring容器进行加载和初始化。import的注解有以下的几种方式使用: 1. @Import(User.class): 直接导入Bean,注意使用该注解,类User要使用注解@Component注册给spring容器; 2. @Import(UserConfig.class): 3. @Import(MyImportSelector.class):导入ImportSelector接口的实现类,实现类中重写方法selectImports(),

JavaWeb程序架构模式的演进

点点圈 提交于 2020-04-02 06:38:41
JavaWeb程序架构模式的演进 老一辈的程序员一般都经历了Web程序架构模式的演进,从最开始的在jsp或者jsp+Servlet上做开发,到后来的mvc、三层等。而现在有挺多人学完web,可能都没怎么使用过jsp或jsp+Servlet开发过项目,就直接学习使用Spring、Spring Boot或者SpringMVC等框架进行开发。如果没有经历这样一个逐步演进的过程,就很难理解框架带给了我们什么样的好处,而且开发过程中遇到问题也难以解决,更别说去学习这些框架中的源码了。学习是一个循序渐进的过程,不能急于求成,所以本文旨在简单的聊一聊Web的发展史。 一、web发展简史 以目前Spring Boot作为时间轴的话,web发展的过程大致可以分为以下几个阶段: 1.纯jsp / jsp+Servlet / jsp+JavaBean+Servlet 2.MVC / MVP / 三层架构 3.使用EJB进行分布式应用的开发,EJB是重量级框架,在使用上比较复杂和麻烦 4.由于EJB太重了,于是Spring应运而生,但是Spring在发展上越来越臃肿,所以还是有许多繁琐的配置 5.同样的由于String配置太繁琐,于是Spring boot诞生了,这时就可以体验到 “约定大于配置” 的乐趣 二、web发展初始阶段 1.jsp / jsp+Servlet / jsp+JavaBean

spring属性注入

為{幸葍}努か 提交于 2020-04-01 13:07:49
1,set方法注入 (1)对于值类型的属性: 在对象中一定要有set方法 package com.songyan.demo1; import com.songyan.injection.Car; /** * 要创建的对象类 * @author sy * */ public class User { private String name; private int age ;/** * 重写toString方法在输出对象时将属性值输出 */ @Override public String toString() { return "name:"+this.name+",age:"+this.age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 在配置文件中进行配置 <!--在user对象中为属性名为name的属性赋值为“tom” --> <property name="name" value="tom"></property> <property name="age"

如何注入值到Spring bean属性

孤街醉人 提交于 2020-04-01 13:07:13
在Spring中,有三种方式注入值到 bean 属性。 正常的方式 快捷方式 “p” 模式 看到一个简单的Java类,它包含两个属性 - name 和 type。稍后将使用Spring注入值到这个 bean 属性。 package com.yiibai.common; public class FileNameGenerator { private String name; private String type; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } } 1.正常方式 在一个“value”标签注入值,并附有“property”标签结束。 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www

Spring(属性值的注入)

断了今生、忘了曾经 提交于 2020-04-01 13:05:25
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:util="http://www.springframework.org/schema/util" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 7 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd 8 http://www.springframework.org/schema/util http://www.springframework.org

如何做自己的服务监控?spring boot 1.x服务监控揭秘

不问归期 提交于 2020-04-01 02:09:40
1.准备 下载可运行程序:http://www.mkyong.com/spring-boot/spring-boot-hello-world-example-jsp/ 2.添加服务监控依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <scope>provided</scope> </dependency> 3.启动spring boot项目 console 截图如下: 4.servlet和filter 4.1 使用ServletRegistrationBean注册dispatcherServlet /** * A {@link ServletContextInitializer} to register {@link Servlet}s in a Servlet 3.0+ * container. Similar to the {@link ServletContext#addServlet(String, Servlet) * registration} features provided by {@link ServletContext} but with a Spring Bean *