Spring实战 | 番外篇: 搭建Spring环境实现helloworld、Bean配置、Spring容器

Spring框架基础入门:spring-helloworld项目实践 Spring框架起源于2003年,是Rod Johnson在其著作《Expert One-to-One J2EE Design and Development》中提出的一种革命性的轻量级容器设计概念。Spring的核心理念是简化企业级应用开发,通过依赖注入(DI)和面向切面编程(AOP)等核心特性,将程序的业务逻辑与系统服务分离,从而提高代码的模块化和可测试性。 阅读详情

一、IntelliJ IDEA搭建Spring环境,实现helloworld

二、spring简介

三、配置形式

四、bean的配置方式

五、IOC和DI

六、在Spring的IOC容器里配置bean

七、关于ApplicationContext的介绍

八、依赖注入的方式

九、Spring容器

一、IntelliJ IDEA搭建Spring环境,实现helloworld

1、创建project

20170424151734669.jpg

2、勾选Spring然后next

20170424152027142.jpg

3、设置你项目所想要存放的路径以及名字

20170424152112674.jpg

4、这时候IntelliJ IDEA就会自动下载Spring所需要的jars,只需要等待就好。

20170424152415189.jpg

5、下载好后,Spring的jars和配置文件都准备好了。

20170424152513274.jpg

6、Spring实现hello world

普通的方法:

20170424155252327.jpg

20170424155549831.jpg

接着我们运行一下这个程序,成功输出了Hello Spring。

è¿éåå¾çæè¿°

接下来我们就要使用Spring了,首先在Spring的配置文件中加入如下内容。

<?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="helloWorld" class="HelloWorld">
    <property name="name" value="Spring"></property>
</bean>
</beans>

这时候我们就配置好了HelloWorld Bean的信息,我们再调用sayHello()方法的时候就不向之前一样了,也需要3个步骤。

  1. 创建一个Spring的IOC容器对象
  2. 从IOC容器中获取Bean实例
  3. 调用sayHello()方法
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloWorld {
    private String name;

    public String getName() {
        return name;
    }

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

    public void sayHello(){
        System.out.println("hello "+name);
    }

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorld");
        helloWorld.sayHello();
    }
}

这么写好像和自己之前编程的时候不一样啊,可以运行结果吗,我们直接试一下就好。

fbce8d6a1a43144f9a81703f65d9b29147a.jpg

好像不太一样啊,输出了我们想要的Hello Spring ,但是好像多了许多其他的东西啊。这些其实是Spring输出的日志而已。
第一次使用Spring,我们明明没有创建HelloWorld的实例对象,只是配置了下Spring的配置文件,怎么就能得出正确的结果呢,这是因为我们使用了Spring的IOC功能,把对象的创建和管理的功能都交给了Spring去管理,我们需要对象的时候再和Spring去要就行。

那么什么时候new的对象呢?

我也不知道,哈哈,所以首先修改一下HelloWorld类的构造方法和setter方法。

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloWorld {
    private String name;

    public HelloWorld() {
        System.out.println("this is helloworld constructor");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        System.out.println("this is helloworld setName()");
        this.name = name;
    }

    public void sayHello(){
        System.out.println("hello "+name);
    }

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        HelloWorld helloWorld = (HelloWorld) context.getBean("helloWorld");
        helloWorld.sayHello();
    }
}

然后直接添加断点进入Debug模式。

b0144f6a6d9b374c993e265c04e9445e01b.jpg

我们可以看到,当执行到第一步创建IOC容器对象的时候就调用了HelloWorld类的构造方法和setter方法。

从上面的例子可以看出:

旧方法:

1、创建helloworld实例

2、设置实例对象的name属性

3、调用sayhello方法

spring:

1、创建spring的IOC容器

2、从IOC容器中获取Bean对象

3、调用sayhello方法

然后我们研究了spring是啥时候new对象的,可以看出,spring帮我们完成了前两步,也就是创建实例对象和设置对象属性,也就是说我们可以把对象的创建和管理工作交给spring去完成,只要写好spring的配置文件即可。

二、spring简介

1、spring是一个开源框架

2、spring是为了简化企业级应用开发而生

3、javabean实现EJB的功能

4、spring是Java一站式框架

spring优点

1、方便解耦,简单开发

2、支持AOP编程

3、支持声明事务

4、方便程序测试

5、方便框架集合

6、降低开发难度

三、配置形式

1、基于xml文件的方式

2、基于注解的方式

四、bean的配置方式

1、通过全类名(反射)

2、通过工厂方法(静态工厂方法&实例工厂方法)

3、FactoryBean

五、IOC和DI

IOC(inversion of control):其思想是反转资源获取的方式。传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源。而应用了IOC之后,容器主动将资源推送给它所管理的组件,组件要做的仅是选择一种合适的方式接收资源。这种行为也被称为查找的被动形式。

DI(Dependency Injection):IOC的另一种表达方式:即组件以一些预先定义好的方式(例如:setter方法)接收来自如容器的资源注入。相对于IOC而言,这种表述更为直接。

六、在Spring的IOC容器里配置bean

只有springIOC容器本身实例化后,才能从IOC容器里获取bean实例并使用。

spring提供了两种类型的IOC容器实现:

1、beanFactory:是spring框架的基础设施,面向spring本身

2、ApplicationContext:面向使用spring框架的开发者,几乎所有的应用场合都直接使用ApplicationContext而非底层的beanFactory,提供了更多的高级特性,ApplicationContext是beanFactory的子接口。

七、关于ApplicationContext的介绍

30067df3a91af89418e4e6d8ced9c51ea7d.jpg

ApplicationContext的主要实现类:

1、ClassPathXmlApplicationContext:从类路径下加载配置文件

2、FileSystemXmlApplicationContext:从文件系统中加载配置文件

子接口ConfigurableApplicationContext 的作用:扩展于ApplicationContext,新增加两个主要方法:refresh()和close(),让ApplicationContext具有启动、刷新和关闭上下文的能力。

ApplicationContext在初始化上下文时就实例化所有单例的bean。

WebApplicationContext是专门为web应用而准备的,它允许从相对于web根目录的路径汇总完成初始化工作。

八、依赖注入的方式

spring支持3种依赖注入的方式

1、属性注入

属性注入即通过setter方法注入bean的属性值或依赖的对象

属性注入使用元素,使用name属性指定bean的属性名称,value属性或子节点属性值

属性注入是实际开发中最常见的注入方式

public void setName(String name)
{
    System.out.println("setName:"+name);
    this.name=name;
}
<bean id="helloWorld" class="spring.bean.HelloWorld">
    <property name="name" value="Spring"></property>
</bean>

2、构造器注入

通过构造方法注入bean的属性值或者依赖的对象(引用),保证了bean实例在实例化后就可以使用

构造器注入在元素里声明属性,没有name属性

创建一个People对象

package com.container;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class People {
        private String name;
        private String sex;
        private int age;

        public People(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public People(String name, String sex) {
            this.name = name;
            this.sex = sex;
        }

        @Override
        public String toString() {
            return "people{" +
                    "name='" + name + '\'' +
                    ", sex='" + sex + '\'' +
                    ", age=" + age +
                    '}';
        }

        public static void main(String[] args) {
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
            People people1 = (com.container.People) applicationContext.getBean("people1");
            System.out.println(people1);
            People people2 = (com.container.People) applicationContext.getBean("people2");
            System.out.println(people2);
        }
    }
<?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="people1" class="com.container.People">
        <constructor-arg value="江疏影" type="java.lang.String"></constructor-arg>
        <constructor-arg value="20" type="int"></constructor-arg>
    </bean>
    <bean id="people2" class="com.container.People">
        <constructor-arg value="江疏影" type="java.lang.String"></constructor-arg>
        <constructor-arg value="man" type="java.lang.String"></constructor-arg>
    </bean>
</beans>

d3c3fdcaafa108a65f7c71dac6138f1012e.jpg

3、工厂方法注入(知道就行,不推荐)

九、spring容器

Spring容器,顾名思义是用来容纳东西的,装的就是Bean。Spring容器负责创建、配置、管理Bean。spring容器有两个核心接口:BeanFactory和ApplicationContext接口,后者是前者的子接口。在基于spring的Java EE程序中,所有的组件都被当成Bean来处理,包括数据源对象、hibernate的sessionFactory、事务管理等,程序中的所有Java类都可以被当成spring容器中的bean。

 1、spring容器

spring容器的核心接口是BeanFactory,它有一个子接口就是ApplicationContext。ApplicationContext也被称为spring上下文。

调用者只需要使用getBean()方法即可获得指定bean的引用。对于大部分的Java程序而言,使用ApplicationContext作为spring容易更为方便。其常用的实现类有FileSystemXmlApplicationContext、ClassPathXmlApplicationContext和AnnotationConfigXmlApplicationContext。如果Java web中使用spring容器,则通常有XmlWebApplicationContext、AnnotationConfigWebApplicationContext两个容器。

创建spring容器的实例时,必须提供spring容器管理的bean的配置文件,也就是我们常说的spring.xml配置文件。因此在创建beanFactory时配置文件作为参数传入。xml配置文件一般以resource对象传入。resource是spring提供的资源访问接口,通过该接口spring更简单、透明的访问磁盘,网络系统和类路径上的相关资源。

对于独立的Java EE应用程序,可以通过如下方法来实例化BeanFactory。

//在当前项目类路径下搜索配置文件
ApplicationContext appContext = new ClassPathXmlApplicationContext("beans_7_3_3.xml");
//在文件系统搜索配置文件
appContext = new FileSystemXmlApplicationContext("D:\\spring-tool-workspace\\myspring\\src\\beans_7_3_3.xml");
//获取chinese的Bean,并且返回的类型为Chinese
Person chinese = appContext.getBean("chinese", Chinese.class);
chinese.useAxe();

2、使用ApplicationContext

大部分时间,都不会使用beanFactory实例作为spring容器,而是使用ApplicationContext作为spring容器,因此spring容器也被称为spring上下文。ApplicationContext增强了beanFactory的功能,提供了很多有用、方便开发的功能。

在web中可以利用如contextLoader的支持类,在web应用启动的时候自动创建ApplicationContext。

除了提供beanFactory所支持的全部功能外,application还额外的提供如下功能:

① ApplicationContext会默认初始化所有的singleton bean(单例bean),也可以通过配置取消。

② ApplicationContext继承了messageSource接口,因此提供国际化支持。

③ 资源访问,比如URL和文件。

④ 事件机制。

⑤ 同时加载多个配置文件。

⑥ 以声明式方式启动并创建spring容器。

ApplicationContext包括beanFactory的所有功能,并提供了一些额外的功能,优先使用ApplicationContext。对于在内存消耗的才使用beanFactory。

当系统创建ApplicationContext容器时,会默认初始化singleton bean,包括调用构造器创建该bean的实例,通过元素驱动spring调用setting方法注入所依赖的对象。这就意味着,系统前期创建ApplicationContext会有很大的开销,但是一旦初始化完成后面获取bean实例就会拥有较好的性能。为了阻止在使用ApplicationContext作为spring容器初始化singleton bean可以在元素添加lazy-init="true"属性。

3、ApplicationContext的国际化支持

ApplicationContext接口继承了MessageSource接口,因此具备国际化功能。

//MessageSource接口提供的国际化的两个方法
String getMessage(String code, Object [] args, Locale loc){
}
String getMessage(String code, Object[]args, String default, Locale loc){
}

spring国际化的支持,其实是建立在Java国际化的基础上的。其核心思路将程序中需要国际化的消息写入资源文件,而代码中仅仅使用国际化信息响应的key。

4、ApplicationContext的事件机制

ApplicationContext的事件机制是观察者设计模式的实现。通过ApplicationEvent和ApplicationListener接口实现,前者是被观察者,后者是观察者。

spring事件框架有两个核心的接口:

ApplicationEvent(事件):必须由ApplicationContext来发布。

ApplicationListener(监听器):实现了此接口就可以担任容器中的监听器bean。

实际上,spring的事件机制是由事件(实现ApplicationEvent接口的类)、事件源(也就是spring容器,并且有Java代码显示的触发)、监听器(ApplicationListener接口实现类)。这就像我们在页面点击一个button。button是事件源,单机的这个动作就是事件,处理函数就是监听器。

以下代码演示spring事件机制:

import org.springframework.context.ApplicationEvent;

public class EmailEvent extends ApplicationEvent{
    private String address;
    private String text;
    public EmailEvent(Object source) {
        super(source);
    }

    public EmailEvent(Object source, String address, String text) {
        super(source);
        this.address = address;
        this.text = text;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class EmailNotifier implements ApplicationListener {
    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        //处理email事件
        if(event instanceof EmailEvent){
            EmailEvent email = (EmailEvent) event;
            System.out.println(email.getAddress()+"  "+email.getText());
        }else {
            //输出spring容器的内置事件
            System.out.println("其它事件:"+event);
        }
    }

    public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans_7_4_4.xml");
        EmailEvent emailEvent = applicationContext.getBean("emailEvent",EmailEvent.class);
        applicationContext.publishEvent(emailEvent);
    }
}
<?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="EmailNotifier"></bean>
    <bean id="emailEvent" class="EmailEvent">
        <constructor-arg value="test"></constructor-arg>
        <constructor-arg value="123@qq.com"></constructor-arg>
        <constructor-arg value="this is a test"></constructor-arg>
    </bean>
</beans>

32d15c15c46f5eb3ba181f40c4fda7a8b82.jpg

从上面的代码可以看出,事件监听器不仅监听到了我们程序显示触发的事件,还监听了spring容器内置的事件。如果实际开发需要,我们可以在spring容器初始化或销毁时回调自定义方法,就可以通过上面的事件监听机制来完成。

spring提供了如下几个内置对象:

ContextRefreshedEvent、ContextStartedEvent、ContextClosedEvent、ContextStoppedEvent、RequestHandledEvent。

5、让bean获取spring容器

上面都是通过ApplicationContext创建spring容器,再调用spring容器的getBean()方法获取bean。这种情况下,程序总是持有spring容器的引用。但是在web应用中,我们可以用声明式的方法来创建spring容器:在web.xml文件中配置一个监听,让这个监听类帮我们来创建spring容器,前端MVC框架直接调用bean,使用依赖注入功能,无需访问spring容器本身。

在某些特殊情况下,bean需要实现某个功能(比如:bean需要输出国际化信息,或向spring容器发布事件),这些功能都需要借助spring容器来完成。就是说我们需要将spring容器作为一个bean来注入到其它bean中,只不过spring容器bean是一个容器级别的bean。

为了让bean获取它所在容器的引用,可以让bean实现beanFactoryAware接口。该接口只有一个方法setBeanFactory(BeanFactory beanFactory)方法,方法的beanFactory参数指向spring容器,会由spring容器注入。我们bean中定义一个setter方法后,通常都是由在配置文件中配置元素来驱动spring容器来注入依赖bean的,但是这里我们并没有这样做,这是因为一个bean如果实现了beanFactory接口,spring在创建该bean时,会自动注入spring容器本身。与beanFactoryAware接口类似的还有BeanNameAware、ResourceLoaderAware接口,这些接口都会提供类似的setter方法,这些方法会由spring容器来注入。

 

Spring实战@目录

无线Mesh组网全攻略:从原理、部署到调优与排障 对于布线困难的大户型、复式楼或园区,传统的无线中继往往面临带宽减半和链路不稳定的问题。无线Mesh网络通过多跳转发与自组织路由,让每个节点无需网线即可协作扩展覆盖,并依靠动态路径选择实现自愈。其核心技术涉及802.11s、HWMP路由协议,以及802.11k/v/r协同的无缝漫游,能有效提升终端切换体验。在实际部署中,设备选型、回程频段规划与布点位置直接决定网络质量。围绕无线Mesh的组网原理、设备选型、配置调优与故障排查,提供一套工程实践参考,帮助用户在复杂环境下构建稳定高效的无缝覆盖。 阅读详情

相关推荐

IAR9.30以上版本安装、注册、新建工程和配置过程详细介绍

IAR 一般是指一款嵌入式软件的集成开发环境,类似于 MDK-Keil 这款软件。IAR 对于不同的内核处理器,是对应不同的 IAR 软件的,IAR 到目前为止支持大部分的MCU,比如8051系列、ARM架构系列、MSP430系列、AVR系列等等这些常用的芯片架构。对于 ARM 架构的芯片,有对应的 IAR Embedded Workbench for ARM 软件平台,因为我主要是使用 ARM 架构芯片,下面安装、注册和使用都是基于这个版本进行介绍的。

luobeihai的博客 6万+

Spring学习笔记:HelloWorld

Spring是一个IOC(DI)和AOP的容器框架。一、Spring特点:1、轻量级:Spring是非侵入性的,基于Spring开发的应用中的对象可以不依赖与Spring的API2、依赖注入(DI、IOC)3、面向切面编程(AOP)4、容器:Spring是一个容器,他包含并且管理应用对象的生命周期5、框架:Spring实现了使用简单的组件配置组合成一个复杂的应用,在Spring中可以使用XML和j...

weixin_41646321的博客 952

双足步行机器人的ZMP与CoP检测

静态步行与动态步行   机器人步态分为静态步行和动态步行。当机器人做静态步行运动时,身体的各个部分运动速度很小,机器人的整体稳定性较易控制。静态步行稳定性采用机器人的重心地面投影点(Center of Gravity,简称CoG)作为稳定性标准,这种判定方法适用于运动较为缓慢的情况。如果机器人采用的是一种高速运动的步行方式,则称之为动态步行。当机器人进行动态步行时,其重心的位置和加速度的大小时...

weixin_34112208的博客 5906

Spring全家桶(一)HelloWorld与入门基础

Spring学习笔记一:理解Spring特点、IOC和DI以及入门例子

1.02^365=1377.41 1万+

Prompt Airlines CTF通关实战:从提示词注入到多模态攻击的AI安全攻防演练

提示词注入(Prompt Injection)是当前大语言模型(LLM)应用面临的核心安全威胁之一,其原理在于攻击者通过精心构造的用户输入,覆盖或绕过系统预设的指令,从而操控模型行为。这种攻击手法的技术价值在于揭示了AI系统在理解与执行指令时存在的逻辑边界模糊性,可能导致数据泄露、越权访问等严重风险。在应用场景上,从基础的客服对话到结合视觉识别的多模态系统,都可能成为攻击面。本文以一场名为“Prompt Airlines CTF”的实战挑战为例,深入剖析了包括指令遗忘、上下文注入、工具调用滥用及多模态提示注

aodan5477的博客 515

PhoenixSuit全志刷机实战:从驱动安装到固件烧录的完整避坑指南

本文提供全志芯片设备使用PhoenixSuit进行线刷的完整实战指南。详细介绍了从驱动安装、双公头USB线连接、强制刷机模式进入,到固件烧录全过程的核心步骤与常见错误排查。重点解析了如何避免驱动安装失败、正确触发刷机模式以及应对烧录卡顿等关键问题,帮助用户顺利完成刷机或救砖操作。

algae的博客 1686

Spring6的介绍和spring6创建helloworld的(超级详细)

Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring 框架除了自己提供功能外,还提供整合其他技术和框架的能力。Spring 自诞生以来备受青睐,一直被广大开发人员作为 Java 企业级应用程序开发的首选。

m0_54140879的博客 1400

2023年全国青少年信息素养大赛C++编程初中组决赛真题+答案解析

2023年全国青少年信息素养大赛C++编程初中组决赛真题+答案解析

伶俐角少儿编程 817

spring概述(一)

spring 个人记录前言一.遇到的问题1:代码高耦合2:业务代码中处理事务的繁琐问题3:使用表现层和持久层框架的繁琐步骤二.Spring介绍三.IoC和DI介绍 前言 一.遇到的问题 1:代码高耦合 public class EmployeeServiceImpl { //依赖DAO private IEmployeeDAO employeeDAO = new Empl...

hero_chao的博客 697

图注意力网络(GAT)原理与代码实战案例讲解

1. 背景介绍 图注意力网络(Graph Attention Network,简称GAT)是一种基于图神经网络(Graph Neural Networks,简称GNN)的深度学习方法。它能够处理具有复杂关系的节点数据,并在多个领域取得了显著的效果,如社交网络分析、推荐系统等。 2. 核心概念与联系

AI架构师小马 2711

机器视觉框架源码——解读5(Dock和开源UI)

本文介绍了工业软件中Dock工具面板的使用方法,主要包括三个部分:添加avalonDock引用、修改属性配置(如显示样式和背景色),以及通过MVVM命令实现布局的加载和保存。加载布局通过XmlLayoutSerializer从XML文件恢复界面状态,保存布局则将当前DockManager的布局序列化为XML文件。文章提供了代码示例和截图说明,帮助开发者快速掌握Dock面板的核心功能。

Z's Palace 401

在IntelliJ IDEA上使用Maven创建Spring项目HelloWorld

因为IDEA自带Maven插件,所以使用IDEA是不需要在下载Maven的文件的,也可使用自己下载的Maven。Spring我们则是通过Maven来下载构建,所以不需要下载jar包的。 大神勿喷,请自行绕道,本博客面向第一次接触spring的小白。刚学习Spring ,请赐教。 开始搭建第一个项目并使用Spring的bean实现HelloWorld在控制台的输出 1.点击File---New

IT业的爬虫的博客 2万+

超详细的Burp Suite安装使用

‌Burp Suite是一个强大的Web应用安全测试工具,适用于网络安全专业人士进行自动化网络应用程序的安全测试。‌ 它提供了在Windows和Kali Linux上安装和激活Burp Suite Professional的简便步骤,帮助用户快速集成并启用强大的网络扫描和渗透测试功能。Burp Suite的特点包括易于安装、良好的兼容性、内置的自动化工具、优秀的用户体验以及详细的教程,使得无论是安全领域的新手还是经验丰富的专家,都能轻松上手并高效地进行安全测试。此外,Burp Suite还支持扩展功能的使用

Dreams°的博客 2640

IntelliJ IDEA搭建Spring环境

目录(一)spring简介(二)在IntelliJ IDEA中创建Spring项目(三)以HelloWorld为例的简单介绍与开发步骤(1)不使用框架进行开发(2)使用Spring框架进行开发(四)对Spring作用的初步了解 开发环境 (一)spring简介 Spring 是一个开源框架. 2. Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean实现以前只有 EJB 才能实 现的功能. 3. Spring 是一个 IOC(DI) 和 AOP 容器框架. 轻量级:

YangMax1的博客 6379

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Spring之初学实现HelloWorld(IDEA)与 IOC容器

目录直通车 前言 一、Spring 实现Hello,World 1、 新建项目 2、 鼠标右击 src 目录,新建一个Spring的xml文件 3、 新建以一个如下的包 4、 在类中写入代码实现HelloWorld 二、 IOC容器 前言 点都点进来了,还望看完了在走吧,说不定有什么收获呢! 为什么我在这么短的时间从Servlet JSP来到了Spring?说不定你也是这样的...

DJun的博客 652

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

从Spring源码看Spring是如何实现HelloWorld

Spring源码硬核解析,从HelloWorld深入Spring源码,了解Spring的底层实现原理与实现。

lyztyycode的博客 905

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Spring学习(一)Spring概述 IOC容器和bean的配置

Spring学习(一)Spring概述 IOC容器和bean的配置 1、Spring概述 1.1、什么是Spring? Spring 是一个开源框架. Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能. Spring 是一个 IOC(DI) 和 AOP 容器框架. Spring优良的特性 轻量:Spring 是非侵入性的 基于Spring开发的应用中的对象可以不依赖于Spring的API 依赖注入:DI—

syh_IT 482

JAVA Spring环境配置及HelloWorld

java spring学习一  在学习python Django的同时,java spring作为大名鼎鼎的主流wen应用开发框架是不得不涉及的,这篇学习笔记是对java spring的环境配置进行基本流程的跟踪。 step1:安装jdk  先去JDK download 下载java se而后可以参考官方自带安装说明来安装jdk。  这里给出简单的安装步骤: 先直接双击安装下载下来的i...

real_Rickys的博客 428

Spring框架-使用 Spring 框架 实现 HelloWorld 输出

最近几天在学习Spring框架,网上找了好多教程,都出现各种各样的错误,最后自己摸索了一天,终于安装成功了,把过程记录一下。 可能你已经学习了Java语言,而现在刚接触Spring框架,但是什么都不会,建议看我的教程,我这以最简单的方式,向大家介绍实现helloworld的方法 如果出现哪一步卡住了,或者和我截图不一样的情况,请评论或者私我 如果出现哪一步卡住了,或者和我截图不一样的情...

Designer 小郑的技术博客 1702

Spring之HelloWorld

搭建 Spring 开发环境 把以下 jar 包加入到下: 工程的 classpath Spring 的配置文件: 一个典型的 Spring 项目需要创建一个或多个 Bean 配置文件, 这些配置文件用于在 Spring IOC 容器里配置 Bean. Bean 的配置文件可以放在 classpath 下, 也可以放在其它目录下. <?xml version="1.0" enc...

Leon_Jinhai_Sun的博客 190

Spring框架学习(1):环境配置以及HelloWorld

因为课程项目需要用到Spring框架,因此我花了两星期的时间在腾讯课堂上看在线课程学习了Spring框架,在接下来的博客中,我主要和大家分享一下我在学习中遇到的问题和解决的方法。 一、环境配置 开发平台:Eclipse Kepler 在Eclipse中安装Spring Tool Suite插件以便在Eclipse平台上开发基于Spring的应用 首先去下载插件:springsource-

qq_24627733的博客 525

Spring的hello,引用IOC容器给bean赋值,以及bean的配置

环境在java项目下新建一个lib目录,引入jar包: 注意:Spring依赖一个日志包: commons-logging-1.1.1.jar **commons-logging-1.1.1.jar spring-beans-4.0.0.RELEASE.jar spring-context-4.0.0.RELEASE.jar spring-core-4.0.0.RELEASE.jar spri...

qq_43257103的博客 182

Spring 环境搭建与IOC HelloWorld

1 博客课程内容简述 关于Spring的简介请移步Spring官网或者我的另一篇博客Spring简介进行查看,这篇博客内容主要介绍Spring IOC 快速入门,让你通过简单的代码快速了解Spring IOC 到底是一个什么东东。 2 Spring maven环境的搭建 第一步引入我们spring的核心依赖 然后在引入日志和测试相关的依赖 3 IOC 之xml版本 4 IOC 之 注解版本 5 代...

程序员小奎的博客 1069

Spring中IOC容器的简单实现、获取bean的三种方式

Spring中IOC容器的简单实现、获取bean的三种方式

qq_42671904的博客 1697

Eclipse安装spring-tools和helloWorld案例

环境准备: 下载zip包:https://spring.io/tools3/sts/all/ 如下zip包下载下来 安装插件 Help ==>Install New SoftWare 如下点击Archive选择下载好后的zip包 如下选择即可 然后后面的同意协议什么的一路next最后finish即可 然后在窗口右下角有进度条进行安装插件,等待弹窗。最后会要求你重启ec...

诗水人间 14万+

第三章 spring IOC与Bean环境搭建与应用

spring IOC与Bean环境搭建与应用

Java 技术专栏,从入门到精通,熟悉企业级开发 724
上一篇: 【编写高质量代码:改善Java程序的151个建议】第10章:性能和效率,第11章:开源世界,第12章:思想为源___建议132~151
下一篇: Spring实战 | 第一部分 Spring的核心(第二章 装配bean,第三章 高级装配)
哪 吒
哪 吒 2022年度博客之星TOP 1 2022年度博客之星TOP 1 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 59万+粉丝 2933原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值