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

目录
相关文章
|
4天前
|
XML Java 测试技术
javaweb实训第五天上午——Spring基础(3)
5.2.1.方案一:使用@Autowired @Autowired为Spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;
72 0
|
4天前
|
Java 数据库连接 API
javaweb实训第五天上午——Spring基础(1)
1.课程介绍 为什么需要Spring; (了解) 初识Spring; (了解) Spring入门; (掌握) Spring依赖注入; (掌握) Spring测试; (掌握) Spring配置细节; (掌握) 三层架构中Spring的使用; (掌握)
32 0
|
4天前
|
Java 数据库 数据安全/隐私保护
基于javaWeb电子商城前后台管理系统网上商城系统(spring+mysql+jsp+jstl+css)
基于javaWeb电子商城前后台管理系统网上商城系统(spring+mysql+jsp+jstl+css)
|
4天前
|
前端开发 JavaScript Java
基于JavaWeb机票订购系统(含前后台)(Java+spring+jsp+bootstrap+mysql)
基于JavaWeb机票订购系统(含前后台)(Java+spring+jsp+bootstrap+mysql)
|
6月前
|
Java 容器 Spring
[javaweb]——spring框架之控制反转(IOC)与依赖注入(DI)
[javaweb]——spring框架之控制反转(IOC)与依赖注入(DI)
|
11月前
|
JSON 算法 安全
JavaWeb基础知识-登录效验-spring事务-AOP(二)
2.JWT令牌 全称:JSON Web Token (https:/ljwt.io/) 定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的。 组成: 第一部分:Header(头),记录令牌类型、签名算法等。例如: {“alg”:“HS256” ,“type” :“JWT”} 第二部分: Payload(有效载荷),携带一些自定义信息、默认信息等。例如:{“id”.“1” ,“username”:“Tom”} 第三部分: Signature(签名),防止Token被篡改、确保安全性。将header、 payload,并加入指定秘钥
|
4天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
60 0
|
4天前
|
缓存 安全 Java
Spring Boot 面试题及答案整理,最新面试题
Spring Boot 面试题及答案整理,最新面试题
142 0
|
4天前
|
存储 JSON Java
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
49 2
|
4天前
|
前端开发 搜索推荐 Java
【Spring底层原理高级进阶】基于Spring Boot和Spring WebFlux的实时推荐系统的核心:响应式编程与 WebFlux 的颠覆性变革
【Spring底层原理高级进阶】基于Spring Boot和Spring WebFlux的实时推荐系统的核心:响应式编程与 WebFlux 的颠覆性变革