[Java Web] Spring

一、概述

Spring是一种轻量级企业应用开发框架,提供了控制反转(IoC)和面向切面编程(AOP)技术。

二、控制反转

控制反转是指程序之间的关系不再直接使用代码进行控制,而是使用容器进行控制。如此控制权就由程序代码转移到外部容器,控制权转移就是控制反转。由于程序组件之间的依赖关系是由容器控制的。在程序运行期间,通过容器动态地将依赖关系注入到组件中就是依赖注入,依赖注入是反转控制的一种形式。在IoC中通过配置文件描述对象之间的依赖关系,而不再使用代码调用其他类对象。在程序运行期间,IoC容器通过加载配置文件,将对象之间的依赖关系注入。

BeanFactory提供了Spring的核心功能,采用工厂模式实现反转控制和依赖注入。通过读取XML文件或属性文件读取JavaBean的定义,从而实现JavaBean的创建、配置和管理。一般将BeanFactory作为容器来获取JavaBean。使用BeanFactory的子接口ApplicationContext读取XML配置文件并加载JavaBean。

//Message.java
package bean;

public class Message {
    private String content;

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

<!-- beans.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean class="bean.Message" name="message">
        <property name="content" value="this is a spring test!"/>
    </bean>
</beans>

//Solution.java
import bean.Message;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Solution {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Message message = (Message) context.getBean("message");
        System.out.println(message.getContent());
    }
}

赋值注入。

//Company.java
package bean;

public class Company {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return String.format("[%d: %s]", id, name);
    }
}

//Worker.java
package bean;

import java.util.List;

public class Worker {
    private int id;
    private String name;
    private Company company;
    private List<String> like;

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public Company getCompany() {
        return company;
    }

    public List<String> getLike() {
        return like;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setCompany(Company company) {
        this.company = company;
    }

    public void setLike(List<String> like) {
        this.like = like;
    }

    @Override
    public String toString() {
        return String.format("[%d: %s] works at %s and likes %s",
                id, name, company, like);
    }
}

//spring-config.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="comp" class="bean.Company">
        <property name="id" value="101"/>
        <property name="name" value="Google"/>
    </bean>
    <bean id="worker" class="bean.Worker">
        <property name="id" value="1001"/>
        <property name="name" value="Lee"/>
        <property name="company" ref="comp"/>
        <property name="like">
            <list>
                <value>Coding</value>
                <value>Game</value>
                <value>Basketball</value>
            </list>
        </property>
    </bean>
</beans>

//Solution.java
import bean.Worker;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Solution {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        Worker worker = (Worker) context.getBean("worker");
        System.out.println(worker.toString());
    }
}

构造器注入。

//Company.java
package bean;

public class Company {
    private int id;
    private String name;

    public Company(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return String.format("[%d: %s]", id, name);
    }
}

//Worker.java
package bean;

import java.util.List;

public class Worker {
    private int id;
    private String name;
    private Company company;
    private List<String> like;

    public Worker(int id, String name, Company company, List<String> like) {
        this.id = id;
        this.name = name;
        this.company = company;
        this.like = like;
    }

    @Override
    public String toString() {
        return String.format("[%d: %s] works at %s and likes %s",
                id, name, company, like);
    }
}

//spring-config.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="comp" class="bean.Company">
        <constructor-arg index="0" value="101"/>
        <constructor-arg index="1" value="Google"/>
    </bean>
    <bean id="worker" class="bean.Worker">
        <constructor-arg index="0" value="1001"/>
        <constructor-arg index="1" value="Lee"/>
        <constructor-arg index="2" ref="comp"/>
        <constructor-arg index="3">
            <list>
                <value>Coding</value>
                <value>Game</value>
                <value>Basketball</value>
            </list>
        </constructor-arg>
    </bean>
</beans>

//Solution.java
import bean.Worker;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Solution {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        Worker worker = (Worker) context.getBean("worker");
        System.out.println(worker.toString());
    }
}

原文地址:https://www.cnblogs.com/arseneyao/p/9408691.html

时间: 2024-10-03 23:04:03

[Java Web] Spring的相关文章

java web Spring mvc 分页实现

分页实现的效果:    ///////// /////////////////////////////////////////////////////// ////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////////////  //////////////////////////////////////////////

java web spring challenge01

首先导入 spring全家桶 jar包 友情链接https://repo.spring.io/release/org/springframework/spring/ 建立工程 工程结构如上 最重要的是web.xml config.xml web.xml <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins

Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这部分内容需要以下Jar包支持 mysql-connector:MySQL数据库连接驱动,架起服务端与数据库沟通的桥梁: MyBatis:一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架: log4j:Apache的开源项目,一个功能强大的日志组件,提供方便的日志记录: 修改后的pom.xm

使用Spring Boot来加速Java web项目的开发

使用Spring Boot来加速Java web项目的开发 我想,现在企业级的Java web项目应该或多或少都会使用到Spring框架的. 回首我们以前使用Spring框架的时候,我们需要首先在(如果你使用Maven的话)pom文件中增加对相关的的依赖(使用gradle来构建的话基本也一样)然后新建Spring相关的xml文件,而且往往那些xml文件还不会少.然后继续使用tomcat或者jetty作为容器来运行这个工程.基本上每次创建一个新的项目都是这么一个流程,而我们有时候仅仅想快速的创建一

Java Web系列:Spring Security 基础

Spring Security虽然比JAAS进步很大,但还是先天不足,达不到ASP.NET中的认证和授权的方便快捷.这里演示登录.注销.记住我的常规功能,认证上自定义提供程序避免对数据库的依赖,授权上自定义提供程序消除从缓存加载角色信息造成的角色变更无效副作用. 1.基于java config的Spring Security基础配置 (1)使用AbstractSecurityWebApplicationInitializer集成到Spring MVC 1 public class Securit

(转)Java Web系列:Spring依赖注入基础

一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是可以专注业务逻辑.因此学习Spring Framework在架构和模式方面的结构和原理,对我们在架构和模块级别的理解帮助极大.Spring Framework(参考1)的宗旨是简化Java开发,主要的手段如下: (1)在架构上解耦:通过DI(依赖注入)管理类型依赖,通过AOP分离关注点,减少重复代码

Java Web系列:Spring依赖注入基础

一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是可以专注业务逻辑.因此学习Spring Framework在架构和模式方面的结构和原理,对我们在架构和模块级别的理解帮助极大.Spring Framework(参考1)的宗旨是简化Java开发,主要的手段如下: (1)在架构上解耦:通过DI(依赖注入)管理类型依赖,通过AOP分离关注点,减少重复代码

Maven 创建java Web项目,配置Spring,CXF

1.搭建Maven环境 参考文章 Maven3路程(一)环境搭建 http://www.cnblogs.com/leiOOlei/p/3359561.html Maven3路程(二)Eclipse集成Maven http://www.cnblogs.com/leiOOlei/p/3361379.html Maven3路程(三)用Maven创建第一个web项目(1) Maven3路程(三)用Maven创建第一个web项目(2)servlet演示 Maven 配置Spring 参考 http://b

Spring Boot加速Java web项目的开发

软件152唐伟 我想,现在企业级的Java web项目应该或多或少都会使用到Spring框架的. 回首我们以前使用Spring框架的时候,我们需要首先在(如果你使用Maven的话)pom文件中增加对相关的的依赖(使用gradle来构建的话基本也一样)然后新建Spring相关的xml文件,而且往往那些xml文件还不会少.然后继续使用tomcat或者jetty作为容器来运行这个工程.基本上每次创建一个新的项目都是这么一个流程,而我们有时候仅仅想快速的创建一个Spring web工程来测试一些东西,或