关于spring,以及spring基于XML文件和注解的简单实现
什么是spring?
Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。是一个开源框架,是一个bean类工厂,核心是控制反转(IOC)、依赖注入(DI)和面向切面(AOP)。
在日常开发过程中,能提高我们的开发速度以及程序的性能:
- 高内聚低耦合:
Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理 ,客户端需要某个对象从而不需要主动的调用,而是对象被动的直接注入(DI)过来; - AOP编程的支持
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能 - 方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持 - 降低JavaEE API的使用难度
Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。
案例:控制反转、依赖注入bean类基于XML文件
1.pom文件配置
根据创建的Maven项目,项目所需要依赖何种jar包都可以直接去maven仓库找到依赖源。(maven仓库:https://mvnrepository.com/)
<?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.yc.hui</groupId>
<artifactId>maven_spring</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>maven_spring Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--下面这俩个为spring的依赖jar包,必须要有这俩个,我们的spring容器才能加载项目才能启动成功-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
</dependencies>
<build>
<finalName>maven_spring</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
其中….依赖jar包
2.在src/main/resource路径下创建一个xxxx.xml作为spring的容器配置文件
我这里命名为application.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="student" class="com.yc.bean.Student">
<property name="sid" value="1"></property>
<property name="sname" value="hui"></property>
</bean>
</beans>
3.bean类
封装一个和application.xml配置文件中的类
package com.yc.bean;
import java.io.Serializable;
public class Student implements Serializable{
private int sid;
private String sname;
@Override
public String toString() {
return "Student [sid=" + sid + ", sname=" + sname + "]";
}
/** * */
private static final long serialVersionUID = 1L;
public Student() {
super();
// TODO Auto-generated constructor stub
}
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 Student(int sid, String sname) {
super();
this.sid = sid;
this.sname = sname;
}
}
4.测试代码
package com.yc.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.yc.bean.Student;
public class TTest {
@Test
public void test1(){
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {
"application.xml"});
Student s=(Student) context.getBean("student");
System.out.println(s);
}
5.测试结果:
案例:控制反转、依赖注入bean类基于注解
1.pom文件配置
<?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.yc.hui</groupId>
<artifactId>maven_spring</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>maven_spring Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--下面这俩个为spring的依赖jar包,必须要有这俩个,我们的spring容器才能加载项目才能启动成功-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
</dependencies>
<build>
<finalName>maven_spring</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
其中….依赖jar包
2.创建一个类作为spring的容器
package com.yc.bean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration //表示这是个容器
public class App {
@Bean
public Student student(){
Student s= new Student();
s.setSid(1);
s.setSname("a");
return s;
}
}
3.bean类
package com.yc.bean;
import java.io.Serializable;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
//@Repository //Dao层
//@Component //通用注解
public class Student implements Serializable{
private int sid;
private String sname;
@Override
public String toString() {
return "Student [sid=" + sid + ", sname=" + sname + "]";
}
/** * */
private static final long serialVersionUID = 1L;
public Student() {
super();
// TODO Auto-generated constructor stub
}
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 Student(int sid, String sname) {
super();
this.sid = sid;
this.sname = sname;
}
}
4.测试代码
package com.yc.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.yc.bean.App;
import com.yc.bean.Student;
public class TTest {
@Test
public void test5(){
ApplicationContext context=new AnnotationConfigApplicationContext(App.class);
Student s=(Student)context.getBean("student");
System.out.println(s);
}
5.测试结果
下一篇咱们介绍springmvc的相关知识,编写不易,谢谢各位支持。
还没有评论,来说两句吧...