「java搭建spring」java搭建文件服务器

博主:adminadmin 2022-11-21 14:27:08 119

本篇文章给大家谈谈java搭建spring,以及java搭建文件服务器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

在基于spring搭建的java web应用中,是通过什么方式触发spring的初始化过程的

前段时间在公司做了一个项目,项目用了spring框架实现,WEB容器是Tomct 5,虽然说把项目做完了,但是一直对spring的IoC容器在web容器如何启动和起作用的并不清楚。所以就抽时间看一下spring的源代码,借此了解它的原理。

我们知道,对于使用Spring的web应用,无须手动创建Spring容器,而是通过配置文件,声明式的创建Spring容器。因此在Web应用中创建Spring容器有如下两种方式:

1. 直接在web.xml文件中配置创建Spring容器。

2. 利用第三方MVC框架的扩展点,创建Spring容器。

其实第一种方式是更加常见。为了让Spring容器随Web应用的启动而启动,有如下两种方式:

1. 利用ServletContextListener实现。

2. 利用load-on-startup Servlet实现。

Spring提供ServletContextListener的一个实现类ContextLoaderListener,该类可以作为Listener 使用,它会在创建时自动查找WEB-INF下的applicationContext.xml文件,因此,如果只有一个配置文件,并且文件名为applicationContext.xml,则只需在web.xml文件中增加以下配置片段就可以了。

listener

listener-class

org.springframework.web.context.ContextLoaderListener

/listener-class

/listener

如果有多个配置文件需要载入,则考虑使用context-param...元素来确定配置文件的文件名。ContextLoaderListener加载时,会查找名为contentConfigLocation的初始化参数。因此,配置context-param...时就指定参数名为contextConfigLocation。

带多个配置文件的web.xml文件如下:

context-param

param-namecontextLoaderListener/param-name

param-value

WEB-INF/*.xml, classpath:spring/*.xml

/param-value

/context-param

listener

listener-class

org.springframework.web.context.ContextLoaderListener

/listener-class

/listener

多个配置文件之间用“,”隔开。

下面我们来看它的具体实现过程是怎样的,首先我们从ContextLoaderListener入手,它的代码如下:

public class ContextLoaderListener implements ServletContextListener

{

private ContextLoader contextLoader;

/**

* 这个方法就是用来初始化web application context的

*/

public void contextInitialized(ServletContextEvent event)

{

this.contextLoader = createContextLoader();

this.contextLoader.initWebApplicationContext(event.getServletContext());

}

/**

* 创建一个contextLoader.

* @return the new ContextLoader

*/

protected ContextLoader createContextLoader()

{

return new ContextLoader();

}

................

}

关于java spring框架的问题

在项目上右键—MyEclipse—Add SpringCaba... 后面的单词我忘了,这个用的是myeclipse自带的spring的集成功能,但是因为没法跟上spring的版本更新,所以在正规开发的时候没什么人用。

你是学习的话可以先试试,后面最好自己找个搭建spring开发环境的博客操作一次

不懂控制反转么?大白话讲清楚spring中这些晦涩的概念

前面介绍了spring环境的搭建,在搭建spring环境的时候分为java环境和javaWeb环境,在javaWeb环境下通常会结合springMVC使用,在java项目中只需要把spring的包导入工程中,一般初学者会把所有的包全部导入,然后就可以通过获得applicationContext,把类的实例化交给spring管理,然后从spring容器中获得类的实例。

spring中有控制反转(Ioc)和依赖注入(DI)两个概念,Ioc和DI是spring的核心概念,同时也是一种新的编程思想。

控制反转(Ioc)

控制反转,顾名思义就是控制权的改变,在没有接触spring之前,我们要使用一个类的实例,必须使用new的方式生成一个对象,这个过程的主动权掌握在程序员亦自己写的程序中,但是使用了spring之后,实例的创建不再由程序员手动实现,而是由spring容器来完成,实现了控制的反转,即主动权交给了spring的IOC容器。

依赖注入(DI)

一个类包括属性和方法,在创建了实例对象之后,或者在创建实例对象的同时,需要初始化成员变量(属性),在spring之前成员变量的初始化可以通过构造方法或setXXX方法;在spring出现之后,由于实例的创建交给了spring的IOC容器,那么成员变量的初始化也依赖于IOC容器,由容器去注入成员变量的值。

上面介绍了IOC和DI两个概念,可以得出IOC和DI其实是在做一件事,就是spring的IOC容器创建实例对象,一切对象的实例化都交给了spring容器,在程序中不必手动使用new的方式实例化变量。

spring提供两种不同的方式来配置spring,一种是配置文件(XML),另一种是基于注解(Annotation)。下面针对IOC和DI使用两种方式一一做介绍

在介绍之前必须了解如何在java项目中获得spring容器,也即ApplicationContext。

获取ApplicationContext的方式有三种,这里使用的ClassPathXmlApplicationContext,ClassPathApplicationContext是ApplicationContext的子类,这里的cpac就是spring的IOC容器,通过它的getBean()方法可以获得容器中已经初始化的实例。

配置文件(XML)

假如我们有下面的学生类(student)

此类有三个属性id、name、age,下面通过配置文件的方式,在spring的配置文件中配置,

在spring的配置文件中配置 标签,id属性在配置文件中必须唯一,class属性指定类的权限类名,下面有 标签,指定Student的三个属性,且指定了属性值,测试结果如下,

这里可以看到输出了配置的值,这种方式是使用属性注入的方式,要求必须有setXXX方法,还有另外一种方式,通过构造方法的方式注入,

既然是通过构造方法的方式注入,那么在Student类中必须要有这个构造方法,在上面的Student类中已经有了有参的构造方法,我们知道在自定义了有参的构造方法之后,系统不会再默认的提供无参构造,我们还必须添加无参构造,下面看测试结果,

由于我们只注入了id、name两个属性,这里可以打印出,age由于未赋值且其类型为String,则默认为null。

上面是通过配置文件的方式,配置了根据属性、构造方法注入的方式,这个例子是比较简单的,下面看一个复杂的例子,在程序中经常会采用分层、面向接口编程的思绪,

DAO接口

service接口

DAO实现类

service实现类

在service的实现类中有一个DAO层的接口对象,我们下面看这种是如何根据属性注入的,

首先,配置DAO层的bean,这里的class属性必须配置其实现类,然后配置service的实现类,在ServiceImpl中有一个dbDAO类型的属性,使用ref属性引用上面的bean。测试结果如下,

ref属性可以引用spring配置文件中的bean,使用id的值。

通过上面的介绍,可以知道使用配置文件这种方式可以很方便的配置,但是当需要配置的类很多,且依赖很多的情况下,这种方式会很繁琐,那么另外一种方式便派上了用场。

注解(Annotation)

spring提供@Component、@Repository、@Controller、@Service四种注解,其实,只使用@Component一个便可以做到,@Repository、@Controller、@Service只是针对不同的层设置的,可以更加明显,@Repository对应DAO层,@Controller对应控制层,@Service对应服务层,使用这三个注解可以明显的分层,使系统容易理解,也可以只使用@Component。

使用了注解需要开启组件自动扫描机制,在spring的配置文件中开启组件自动扫描机制,需要context命名空间的支持,下面是一个配置文件的例子,

在spring配置文件的头部添加context命名空间的支持,然后使用 标签开启组件扫描,base-package属性指定扫描的基包,此包及此包下的子包都会进行扫描。开启了组件扫描之后,还需要自动注入,网上有说需要: ,其实前面的组件扫描已经包含了此标签的作用,为此不需要配置此标签了,自动注入默认根据类型(byType)进行注入,还有根据名字注入(byName)即bean中id的值,还有根据构造方法注入(constructor)。自动注入需要@Aotuwired注解,此注解可以放在属性上,也可以放在setXXX方法上,放在属性上则可以省略setXXX方法,下面是具体的例子

在类上使用@Component注解,且指定了实例的名为su,如果不指定则默认为类名称首字母小写,即studentAnnotation。

下面是一个自动扫描和自动注入的例子,

类上使用了@Service注解,属性上使用了@Autowired注解,这时setDbDAO()方法可以不要。@Autowired注解就是为了省略setXXX方法的,@Autowired注解默认使用的按照类型注入,如果存在多个相同类型的实例,这里自动注入会失败,为了可以正确注入,引入另外一个注解@Qualifier(value=""),此注解的value属性可以指定一个bean的id值,做到自动注入。

@Qualifier可以用在属性或者setXXX方法上。

综上,通过配置文件和注解两种方式介绍了依赖注入。

关于java搭建spring和java搭建文件服务器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-21,除非注明,否则均为首码项目网原创文章,转载请注明出处。