当前位置:   article > 正文

Java Web Spring框架学习(一)_java spring 开发web

java spring 开发web

Spring框架是当前最流行的的Web框架之一,之前很火的企业级框架SSH框架指的就是Spring,Struts2,和Hibernate框架,当前最火的也是应用最火的是SSM框架,指的是Spring,SpringMVC,和Mybatis,可见Spring框架的重要性。

Spring的核心:

IOC:(Inverse of Control 反转控制)控制反转:将对象的创建权,交由Spring完成.
AOP : Aspect Oriented Programming 是 面向对象的功能延伸.不是替换面向对象,是用来解决OO中一些问题.

学习Spring框架主要需要具备的知识:JavaSE,JUnit,Maven,Servlet,一些XML的了解

我使用的集成开发环境是idea,首先new一个project选择maven下的webapp,一路和之前用maven创建webapp项目是一样的,创建好以后还需要在目录骨架上加一些东西(我用的是全屏截图,看不清貌似可以到网页中打开图片):


和maven项目一样在main和test下建好java目录,和resources用于放配置,然后右击文件选择mark as改成图片里面那些属性标记,然后java类当然是放在java目录下的包内,接下来就是导入Spring所需要的jar包,这个Maven完美解决,直接在中央库里找,找好打包安装刷新一下maven project那就好了,不会maven操作的可以看我之前的文章:点击打开链接 然后我把我的pom.xml发上来(我用maven下载好了jar包以后删掉了plugins的内容):

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>MySpring</groupId>
  5. <artifactId>MySpring</artifactId>
  6. <packaging>war</packaging>
  7. <version>1.0-SNAPSHOT</version>
  8. <name>MySpring Maven Webapp</name>
  9. <url>http://maven.apache.org</url>
  10. <dependencies>
  11. <dependency>
  12. <groupId>org.springframework</groupId>
  13. <artifactId>spring-context</artifactId>
  14. <version>5.0.2.RELEASE</version>
  15. <scope>compile</scope>
  16. </dependency>
  17. <dependency>
  18. <groupId>junit</groupId>
  19. <artifactId>junit</artifactId>
  20. <version>4.9</version>
  21. </dependency>
  22. </dependencies>
  23. <build>
  24. </build>
  25. </project>
下好了jar包就可以在main里的java中的resources里面创建applicationContext.xml,这是Spring用于管理的bean的文件,那么一个Maven管理的Spring项目骨架基本建好了,可以开始学习Spring了

自己反复看了几遍慕课网讲的Spring,感觉因为讲师跳的太快很多步骤都没讲,听得不是很明白,然后上网搜了几篇Spring入门博客看了大致了解了Spring的使用,原理细节什么的打算以后全部会使用了买本书慢慢专研。

我眼里的Spring大概是干嘛的:

所谓的框架其实就是一种代码的统一规范,这样在做复杂工程时可以简化操作,Spring也是一种代码规范,Spring项目里的对象的实例叫做bean,在java程序中你可以不必自己new一个你需要的对象,直接从Spring框架中的ApplicationContext容器里面取出一种叫bean的东西进行使用。然后applicationContext.xml配置文件就是对ApplicationContext容器里的bean进行管理,赋值初始化什么的,对bean进行赋值操作叫做注入,对bean进行操作有两种形式,配置文件和注解。

上传我的applicationContext.xml内容,然后会进行讲解:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <bean id="app" class="Tools.app"></bean>
  6. <bean id="mybean" class="Tools.Mybean">
  7. <property name="name" value="hjy"></property>
  8. <property name="age" value="19"></property>
  9. <property name="id" value="1008611"></property>
  10. </bean>
  11. </beans>
从上到下,第一行说的是xml的版本号和编码格式,第二行下面的一坨就是Spring的名称空间(还不知道是干嘛的)

重点就是beans里面的内容,先说beans标签属性:default-init-method和default-destory-method,这个属性可以填也可以不填,如名字,分别是全局默认的初始化函数和全局默认的销毁函数,在创建beans标签下的bean时会自动调用这些类中的初始化函数,销毁bean的时候会自动调用销毁函数,都为public void类型,。然后每一个bean都有一个id,相当于你实例化类的名字,class就指向你需要实例化的类的位置,那么一个bean就创建好了。然后bean标签的子标签property是用于初始化bean的属性的,需要class指向的类中有相应的set函数,在实例化bean的时候会自动调用set函数,value就是你需要赋的值。

在类中使用bean的时候需要获得文件的静态ApplicationContext对象,用它的getBean(bean的id)方法可以得到一个Object对象,用下强制类型转化就可以获得你需要的类,然后就和一般的实例化对象一样用了。

我写的Mybean.java:

  1. package Tools;
  2. public class Mybean{
  3. private String name;
  4. private int age;
  5. private int id;
  6. public void setName(String name) {
  7. this.name = name;
  8. }
  9. public void setAge(int age) {
  10. this.age = age;
  11. }
  12. public void setId(int id) {
  13. this.id = id;
  14. }
  15. public void Say(String sth)
  16. {
  17. System.out.println(name+","+age+","+id+","+sth);
  18. }
  19. }
然后获得一个ApplicationContext对象的方法有两种:
加载classpath: 
 ApplicationContext applicationContext =ClassPathXmlApplicationContext(“applicationContext.xml”);
或加载磁盘路径: 
ApplicationContext applicationContext =new FileSystemXmlApplicationContext(“applicationContext.xml”);

ApplicationContext对象有个getBean(String)方法,里面填bean的id就可以获得你想要的bean了

然后每次都要加载classpath很麻烦,我们可以通过写一个继承ApplicationContextAware接口类的对象,重写里面的public void setApplicationContext(ApplicationContext applicationContext)函数可以直接获得ApplicationContext对象,下面是我写的代码app.java:

  1. package Tools;
  2. import org.springframework.beans.BeansException;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.ApplicationContextAware;
  5. import org.springframework.context.support.ClassPathXmlApplicationContext;
  6. public class app implements ApplicationContextAware {
  7. private static ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
  8. public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
  9. app.context=applicationContext;
  10. }
  11. public static ApplicationContext getContext()
  12. {
  13. return context;
  14. }
  15. }

然后是测试类MybeanTest.java:(这部分是JUnit的知识)

  1. package Tools;
  2. import org.junit.Test;
  3. public class MybeanTest {
  4. @Test
  5. public void SayTest()
  6. {
  7. Mybean temp=(Mybean) app.getContext().getBean("mybean");
  8. temp.Say("Spring test!");
  9. }
  10. }
运行下Test就可以得到测试结果:

hjy,19,1008611,Spring test!

取自慕课网的笔记:

生命周期:定义,初始化,使用,销毁
初始化:
方法1.实现InitializingBean接口,使用接口提供的初始化方法
方法2.在配置文件中bean节点init-method添加init-method="methodInit"属性,在对应的类中使用自定义的初始化方法
方法3.在配置文件的全局变量中,提供default-init-method="methodInit"属性,在对应的类中使用自定义的初始化方法

销毁(和初始化类似)
方法1.实现DisposableBean接口,使用接口提供的销毁方法
方法2.在配置文件中为对应的bean节点destory-method添加destory-method="methodDestory"属性,使用自定义的销毁方法
方法3.在配置文件的全局变量中,提供default-init-destroy="methodDestory"属性,在对应的类中使用自定义的销毁方法

注意:
三种方法的执行顺序等级:方法1>方法2>方法3,方法3可以被方法1/方法2覆盖

#spring——bean的配置及作用域#
1.bean的常用配置项:(理论上只有class是必须的)
id:唯一标识
class:具体是哪一个类
scope:范围
constructor arguments:构造器的参数
properties:属性
Autowiring mode:自动装配模式
lazy-initialization mode:懒加载模式
initialization/destruction method:初始化/销毁的方法
2.bean的作用域
singletion 单例 bean容器只有唯一的对象(bean的scope属性,默认模式)
prototype 每次请求会创建新的实例,destory方式不生效(bean的scope属性)
request 对于request创建新的实例,只在当前request内有效
session 对于session创建新的实例,只在当前session内有效
global session 基于portlet(例如单点登录的范围)的web中有效,如果在web中同session

1.ApplicationContextAware
1.1  接口方法:setApplicationContext
1.2  作用:通常用来获取上下文对象,声明全局变量后在方法中对变量进行初始化并供其他方法调用
1.3  实现过程:创建一个类并实现ApplicationContextAware接口,重写接口方法public void setApplicationContext(ApplicationContext applicationContext);在xml文件中配置该类;当spring加载该配置文件时即调用接口方法

2.BeanNameAware
2.1  接口方法:setBeanName
2.2  作用:获取声明的类名,声明全局变量后在方法中对变量进行初始化并供其他方法调用
2.3  实现过程:创建一个类并实现BeanNameAware接口,重写接口方法public void setBeanName(String name);在xml文件中配置该类;当spring加载该配置文件时即调用接口方法

最后推荐一篇很好的入门文章:点击打开链接

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/384650
推荐阅读
相关标签
  

闽ICP备14008679号