关于spring,以及spring基于XML文件和注解的简单实现

什么是spring?

Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。是一个开源框架,是一个bean类工厂,核心是控制反转(IOC)、依赖注入(DI)和面向切面(AOP)。
在日常开发过程中,能提高我们的开发速度以及程序的性能:

  1. 高内聚低耦合:
    Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理 ,客户端需要某个对象从而不需要主动的调用,而是对象被动的直接注入(DI)过来;
  2. AOP编程的支持
    Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
  3. 方便集成各种优秀框架
    Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持
  4. 降低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的相关知识,编写不易,谢谢各位支持。

猜你喜欢

转载自blog.csdn.net/weixin_42826672/article/details/82353240