文章目录
1、Java创建对象常见的四种方式?
先创建一个学生类
import java.io.Serializable;
public class Students implements Cloneable, Serializable {
private int sid; //学号
private String sname; //姓名
private String gender; //性别
private String birthday; //出生日期
private String major; //专业
//一定要保留这个默认的无参数的构造方法,否则spring也无法实例化。
public Students() {
}
public Students(int sid, String sname, String gender, String birthday, String major) {
this.sid = sid;
this.sname = sname;
this.gender = gender;
this.birthday = birthday;
this.major = major;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
public String toString() {
return "Students{" +
"sid=" + sid +
", sname='" + sname + '\'' +
", gender='" + gender + '\'' +
", birthday='" + birthday + '\'' +
", major='" + major + '\'' +
'}';
}
}
new关键字 |
import java.io.*;
import java.lang.reflect.Constructor;
public class IocDemo {
public static void main(String[] args) throws Exception {
Students s1 = new Students(100,"宋小宝","男","1999-10-10","二人转");
System.out.println(s1);
}
}
clone方法 |
import java.io.*;
import java.lang.reflect.Constructor;
public class IocDemo {
public static void main(String[] args) throws Exception {
Students s1 = new Students(100,"宋小宝","男","1999-10-10","二人转");
//使用clone来创建对象。
Students s2 = (Students) s1.clone();
System.out.println(s2);
}
}
反射 |
import java.io.*;
import java.lang.reflect.Constructor;
public class IocDemo {
public static void main(String[] args) throws Exception {
Students s1 = new Students(100,"宋小宝","男","1999-10-10","二人转");
//反射怎么创建对象呢。大家仔细观察我没有使用new.使用了反射。
Class clazz = s1.getClass();
Constructor constructor = clazz.getConstructor(int.class,String.class,String.class,String.class,String.class);
Students s5 = (Students) constructor.newInstance(new Object[]{100,"小沈阳","女","1999-10-10","二人转"});
System.out.println(s5);
}
}
反序列化 |
import java.io.*;
import java.lang.reflect.Constructor;
public class IocDemo {
public static void main(String[] args) throws Exception {
File file = new File("dest.data");
Students s1 = new Students(100,"宋小宝","男","1999-10-10","二人转");
//反序列化创建对象。
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(s1); //把宋小宝对象写入到文件中。
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
Students s6 = (Students) in.readObject();
System.out.println(s6);
}
}
什么是反射?说说反射是如何应用到spring框架上。
反射机制是Java语言中一个非常重要的特性,它允许程序在运行时进行自我检查,同时也允许对其内部成员进行操作。反射机制提供的功能主要有:得到一个对象所属的类;获取一个类的所有成员变量和方法;在运行时创建对象;在运行时调用对象的方法。
就好比给对象做CT,通过反射对象可以观察到自身的状态和属性。比如;构造方法、属性、成员方法、注解…
IOC内部实现技术=XML解析+反射
2、什么是maven?maven的核心功能有哪些?
maven是一个项目管理工具软件,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。
maven四大核心功能: 依赖管理、模块管理、部署管理、插件管理。
如何给maven添加依赖?
就是用它来自动导入jar包!
访问mvn官网
找到依赖后,添加pom.xml 的 Dependencies标签下。
3、什么是MVC?说说分层的好处。
MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范。
MVC是一种设计模式,一种软件分层思想的体现。
M:Model ----->JavaBean
V:View ----->jsp/html
C:Controller ---->Servlet/Controller
分层就是体现了MVC的设计模式。
分层的好处就是解耦,做到高内聚,低耦合。
4、Spring的两大核心技术是什么?
1、IOC(DI):
Inverse of Controller,控制反转。
Dependency Inject ,依赖注入。
2、AOP:
面向切面编码。
什么是IOC/DI?
IOC(控制反转):全称为:Inverse of Control。从字面上理解就是控制反转了,将对在自身对象中的一个内置对象的控制反转,反转后不再由自己本身的对象进行控制这个内置对象的创建,而是由第三方系统去控制这个内置对象的创建。
DI(依赖注入):全称为Dependency Injection,意思自身对象中的内置对象是通过注入的方式进行创建。
那么IOC和DI这两者又是什么关系呢?
IOC就是一种软件设计思想,DI是这种软件设计思想的一个实现。而Spring中的核心机制就是DI。
就是把本来在类内部控制的对象,反转到类外部进行创建后注入,不再由类本身进行控制,这就是IOC的本质。
就是不使用new 创建对象,而是通过IOC容器自动注入.