javaweb实训第五天上午——Spring基础(2)

简介: 添加文档声明和约束(这个东西不需要记忆):  (1)可以参考文档,中英文文档都可以;    ①spring-framework-4.1.2.RELEASE\docs\spring-framework-reference\pdf  (2)可以参考资源中的资料;  (3)可以百度spring的配置文件;  (4)也可以直接拿以下内容去修改

javaweb实训第五天上午——Spring基础(1)https://developer.aliyun.com/article/1415048

添加文档声明和约束(这个东西不需要记忆):

 (1)可以参考文档,中英文文档都可以;

   ①spring-framework-4.1.2.RELEASE\docs\spring-framework-reference\pdf

 (2)可以参考资源中的资料;

 (3)可以百度spring的配置文件;

  1.  (4)也可以直接拿以下内容去修改
<?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="..." class="...">
  <!-- collaborators and configuration for this bean go here -->
  </bean>
</beans>


第三步:编写逻辑代码

1.准备一个普通的Java类(MyBean)

public class MyBean {
  public void hello(){
    System.out.println("hello spring...");
  }
}

第四步:将这个类交给Spring去管理即注册到Spring容器中


大家要记得,Spring是一个容器,我们需要把我们的类交给Spring去管理。 因为,我们的测试是创建一个普通的类,然后再通过Spring帮我们把这个类的对象创建出来就算是成功了;

在配置文件中将这个Java类交给Spring管理。在applicationContext.xml中配置

<beans ...>
  <bean id="myBean" class="cn.cxjcloud._01_hello.MyBean"></bean>
</beans>

元素和属性讲解:

bean元素:表示对象配置或注册标签;

id属性:这个bean对象在Spring容器中的唯一标识,也可以使用name,常用id(唯一特性),获取这个对象的时候就可以通过这个表示来获取;

class属性:对应对象所属类的完全限定名。注意这里可以是JDK自带的类,也可以是自己新建的类;

注意:Spring容器中不允许有两个名字【不管是id指定还是name指定】一个的对象

问题:我想使用或者获取Spring容器创建的这个对象或Bean,那么如何操作?

4.2.Spring容器的实例化(如何创容器对象_测试用)

  1. Spring容器对象有两种:BeanFactory和ApplicationContext;
  2. ApplicationContext继承自BeanFactory接口,拥有更多的企业级方法,推荐使用该类型;

4.2.1.BeanFactory

  1. BeanFactory是一个接口,可以通过其实现类XmlBeanFactor获取其实例。接口中有一个getBean()方法可以获取Spring容器中配置或注册的Bean对象;
@Test
public void testHelloSpring() throws Exception {
  /**
   *我们第一步是要启动框架,而启动框架则需要拿到Spring的核心对象
   *咱们学习的第一个核心对象是BeanFactory : 顾名思义,这是一个创建Bean的工厂
   *而Bean工厂创建对象又必需拿到配置文件中的数据
   *因为:我们的第一步读取配置文件,拿到BeanFactory工厂 
   */
  //第一步:读取资源文件
  Resource resource = new ClassPathResource("applicationContext.xml");
  //第二步:拿到核心对象 BeanFactory
  BeanFactory factory = new XmlBeanFactory(resource);
}

4.2.2.ApplicationContext(推荐使用)

ApplicationContext的中文意思是"应用程序上下文",它继承自BeanFactory接口,除了包含BeanFactory的所有功能之外,在国际化支持、资源访问(如URL和文件)、事件传播等方面进行了良好的支持,被推荐为JavaEE应用之首选,可应用在Java APP与Java Web中;

  1. 要使用ApplicationContext的功能,必需要导入相应的jar包:
spring-context-4.1.2.RELEASE.jar    --  上下文
spring-expression-4.1.2.RELEASE.jar   --  Spring表达式语言
//加载工程classpath下的配置文件实例化
String conf = "applicationContext.xml";
ApplicationContext factory = new ClassPathXmlApplicationContext(conf);

4.2.3.获取对象方式

方式一:通过id直接拿到相应的Bean对象

//通过xml中配置的id拿到对象
MyBean bean = (MyBean)factory.getBean("myBean");
System.out.println(bean);

方式二:通过id与对象的Class对象拿到Bean对象(推荐使用)

//通过id与对象的class拿到Bean对象
MyBean bean = factory.getBean("myBean",MyBean.class);
System.out.println(bean);

4.2.4.ApplicationContext与BeanFactory的区别【掌握】

联系:

1.ApplicationContext是BeanFactory的子类,拥有更多的功能与方法;

区别:

1.ApplicationContext默认是在读取配置文件的时候就会根据配置创建Bean对象(迫切加载)。而BeanFactory是在使用的时候才进行对象的创建(懒加载/延迟加载)

扩展:

1.我们在使用ApplicationContext的时候,可以通过配置让它也变成与BeanFactory一样的懒加载:

配置一:让所有Bean都变成懒加载,只需要在标签中加入default-lazy-init=“true”:

<beans xmlns="http://www.springframework.org/schema/beans"
....
default-lazy-init="true">
  <bean id="myBean" class="cn.cxjcloud._01_hello.MyBean"></bean>
</beans>

配置二:让其中一个Bean变成懒加载,在标签中加入lazy-init=“true”:

<bean id="myBean" class="cn.cxjcloud._01_hello.MyBean" lazy-init="true"></bean>


5.Spring依赖注入

  1. IoC是一种思想,它的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的;

Spring中的对象都是由Spring进行统一管理,但是在对象中还存在属性,这些属性实际上引用的也是别的对象,那么这些对象也是由Spring来管理的;

在实际使用时,我们需要给Spring中对象的属性字段赋值,这称为依赖注入DI(Dependency Injection);

依赖注入又分为xml注入和注解注入;

5.1.xml注入

顾名思义:在xml中进行配置,但是这种方式必须有对应的setter方法,所有这种注入方式又称之为属性注入或setter方法注入;

public class MyBean{
    private OtherBean otherBean;
    public void hello(){
        otherBean.hello();
    }
    public void setOtherBean(OtherBean otherbean){
        this.OtherBean = OtherBean
    }
}
public class OtherBean{
    public void hello(){
        System.out.println("otherbean hello");
    }
}
//xml配置:
<bean id="otherBean" class="cn.cxjcloud.bean.OtherBean"></bean>
<bean id="myBean" class="cn.cxjcloud.bean.MyBean">
<property name="otherBean" ref="otherBean"></property>
</bean>
//测试:main方法测试
//加载工程classpath下的配置文件实例化
        String conf = "applicationContext.xml";
        ApplicationContext factory = new ClassPathXmlApplicationContext(conf);

5.2.注解注入

顾名思义:通过注解实现注入,这种方式可以将注解写在setter方法上,也可以写在字段上,如果写在字段上可以不需要setter方法;

javaweb实训第五天上午——Spring基础(3)https://developer.aliyun.com/article/1415082?spm=a2c6h.13148508.setting.19.6e1a4f0eQzpjQW

目录
相关文章
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
5月前
|
消息中间件 Java Spring
JavaWeb后端开发Spring框架之消息 消息队列案例--订单短信通知
JavaWeb后端开发Spring框架之消息 消息队列案例--订单短信通知
50 0
|
6月前
|
前端开发 JavaScript Java
基于JavaWeb机票订购系统(含前后台)(Java+spring+jsp+bootstrap+mysql)
基于JavaWeb机票订购系统(含前后台)(Java+spring+jsp+bootstrap+mysql)
|
6月前
|
XML Java 测试技术
javaweb实训第五天上午——Spring基础(3)
5.2.1.方案一:使用@Autowired @Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;
96 0
|
6月前
|
Java 数据库连接 API
javaweb实训第五天上午——Spring基础(1)
1.课程介绍 为什么需要Spring; (了解) 初识Spring; (了解) Spring入门; (掌握) Spring依赖注入; (掌握) Spring测试; (掌握) Spring配置细节; (掌握) 三层架构中Spring的使用; (掌握)
52 0
|
6月前
|
Java 数据库 数据安全/隐私保护
基于javaWeb电子商城前后台管理系统网上商城系统(spring+mysql+jsp+jstl+css)
基于javaWeb电子商城前后台管理系统网上商城系统(spring+mysql+jsp+jstl+css)
132 0
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
1月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
166 2
|
12天前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
26 2
 SpringBoot入门(7)- 配置热部署devtools工具
|
8天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
21 2