一、如何创建一个SpringCore的工程
1.创建项目并且创建如下的关系类
2.pom.xml文件的配置
添加依赖:Spring的物料清单
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wschase.springcore</groupId>
<artifactId>javalianxi-springcore-case1</artifactId>
<version>1.0.0</version>
<!--这是一个Springcore的案例:我们需要添加Spring的物料清单-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.3.9.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--Spring框架依赖-->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
</dependencies>
</project>
配置完以后我们发现在依赖里面总共有5个jar包(将Spring框架里面的jar包都加进来),每个jar包都称之为模块。表示spring-context依赖了下面的4个包。
3.定义Shape接口,定义计算图形面积和周长的方法
package com.wschase.springcore.common;
/**
* Author:WSChase
* Created:2019/5/4
*/
public interface Shape {
/**
* 计算图形面积
*/
double computeArea();
/**
* 计算图形边长
*/
double computeSide();
}
4.分别创建不同的图形实现Shape接口
(1)圆形
注意:final修饰的属性没有set方法
package com.wschase.springcore.common.impl;
import com.wschase.springcore.common.Shape;
/**圆形
* Author:WSChase
* Created:2019/5/4
*/
public class Circular implements Shape {
//计算圆形的面积我们自需要半径
private final double radius;
public Circular(double radius) {
this.radius = radius;
}
public double getRadius() {
return radius;
}
public double computeArea() {
return Math.PI*Math.pow(radius,2);
}
public double computeSide() {
return 2*Math.PI*radius;
}
}
(2)矩形
package com.wschase.springcore.common.impl;
import com.wschase.springcore.common.Shape;
/**长方形
* Author:WSChase
* Created:2019/5/4
*/
public class Rectangle implements Shape {
private final double height;
private final double width;
public Rectangle(double height, double width) {
this.height = height;
this.width = width;
}
public double getHeight() {
return height;
}
public double getWidth() {
return width;
}
public double computeArea() {
return height*width;
}
public double computeSide() {
return 2*(height+width);
}
}
(3)三角形
package com.wschase.springcore.common.impl;
import com.wschase.springcore.common.Shape;
/**三角形
* Author:WSChase
* Created:2019/5/4
*/
public class Triangle implements Shape {
private final double a;
private final double b;
private final double c;
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
public double getA() {
return a;
}
public double getB() {
return b;
}
public double getC() {
return c;
}
public double computeArea() {
double q=(this.computeSide())/2;
double s=Math.sqrt(((a-q)*(b-q)*(c-q))*q);
return s;
}
public double computeSide() {
return this.getC()+this.getA()+this.getB();
}
}
5.实现
(1)
package com.wschase.springcore.xml;
import com.wschase.springcore.common.Shape;
/**
* Author:WSChase
* Created:2019/5/4
*/
public class XmlShapeCompute {
private Shape circular;
private Shape triangle;
private Shape rectangle;
public Shape getCircular() {
return circular;
}
public void setCircular(Shape circular) {
this.circular = circular;
}
public Shape getTriangle() {
return triangle;
}
public void setTriangle(Shape triangle) {
this.triangle = triangle;
}
public Shape getRectangle() {
return rectangle;
}
public void setRectangle(Shape rectangle) {
this.rectangle = rectangle;
}
public Shape computeShape(String shapeName){
if(shapeName==null||shapeName.length()==0){
throw new IllegalArgumentException("Not Found");
}
if(shapeName.equals("circular")){
return circular;
}
if(shapeName.equals("triangle")){
return triangle;
}
if(shapeName.equals("rectangle")){
return rectangle;
}
throw new IllegalArgumentException("Not Found");
}
}
(2)我们可以看到在这个实现类里面我们并没有通过new创建对象,只是通过new创建了容器,然后容器在我们的配置文件中实现自动给装配,实例化对象
package com.wschase.springcore.xml;
import com.wschase.springcore.common.Shape;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Author:WSChase
* Created:2019/5/4
*/
public class XmlApplication {
public static void main(String[] args) {
//此时我们创建对象的时候不需要new对象了,直接创建一个容器容器帮我们创建对象:容器会到我们的配置文件中找对应的对象
ApplicationContext context=new ClassPathXmlApplicationContext("application-context.xml");
//下面就是创建对象
XmlShapeCompute xmlShapeCompute= (XmlShapeCompute) context.getBean("xmlShapeCompute");
Shape shape=xmlShapeCompute.computeShape(args[0]);
System.out.println(shape);
}
}