使用Spring容器

  1. maven配置;
  2. 创建Bean配置文件并定义好所需对象;
  3. 创建Spring容器并制定需要装载的Bean配置文件;
  4. 通过容器提供的方法获取容器中的对象来使用。

Bean

什么是Bean??
Bean是一套约定或规范。具体的说Bean:
1、所有属性为private
2、提供默认构造方法
3、提供getter和setter
4、实现serializable接口

简单的说:由spring容器管理的对象都是Bean对象,也是普通的java对象。

码两篇文章【javaBean上】【javaBean下】

Bean、EJB、POJO及区别

  • 在java1996年发布,当年12月即发布了java bean1.00-A,有什么用呢?通过统一的规范可以设置对象的值(get,set方法),这是最初的java bean;
  • 在实际企业开发中,需要实现事务、安全、分布式,javabean就不好用了.sun公司就开始往上面堆功能,这里java bean就复杂为EJB;
  • EJB功能强大,但是太重了.此时出现DI(依赖注入),AOP(面向切面)技术,通过简单的java bean也能完成EJB的事情,这里的java bean简化为POJO;
  • Spring诞生了.

区别:先判断是否满足javabean的条件,然后如果再实现一些要求,满足EJB条件就是EJB,否则就是POJO。

Spring支持三种方式配置Bean文件

自动装配、java注解和xml配置(三种允许单独使用或混合使用)

XML中的Bean配置

bean定义
  1. 常见bean.xml内容
1
2
3
4
5
6
7
8
9
10
11
<?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-4.3.xsd">

<import resource="引入其他bean xml配置文件" />
<bean id="bean标识" class="玩转类型名称"/>
<alias name="bean标识" alias="别名" />

</beans>
  1. bean命名
1
<bean id="bean的唯一标识" name="bean的名称" class="完整类型名称" factory-bean="工厂bean名称" factory-method="工厂方法"/>

bean名称别名定义规则
名称和别名可以通过bean元素中的id和name来定义,具体定义规则如下::

  1. 当id存在的时候,不管name有没有,取id为bean的名称;
  2. 当id不存在,此时需要看name,name的值可以通过,;或者空格分割,最后会按照分隔符得到一个String数组,数组的第一个元素作为bean的名称,其他的作为bean的别名;
  3. 当id和name都存在的时候,id为bean名称,name用来定义多个别名;
  4. 当id和name都不指定的时候,bean名称自动生成,生成为“完整类名 +#+编号。”eg:com.hello#0

alias元素也可以用来给某个bean定义别名,语法:

1
<alias name="需要定义别名的bean" alias="别名" />
  1. import——bean汇总

在一个总的bean xml中对其他bean xml进行汇总,相当于把多个bean xml的内容合并到一个里,可以通过import元素引入其他bean配置文件。

在要汇总的bean.xml下

1
<import resource="其他配置文件的位置" />
容器创建bean实例
  1. 通过反射调用构造方法创建bean对象
  1. 通过静态工厂方法创建bean对象

  2. 通过实例工厂方法创建bean对象

  1. 通过FactoryBean创建bean对象

自动装配

Spring从两个角度来实现自动化装配

  1. 组件扫描:Spring自动发现应用上下文中所创建的Bean
  2. 自动装配:Spring自动满足Bean之间的依赖。

通过javaConfig显式配置

全程@Bean注解,通过return返回实例或进行DI配置。

实践部分

创建一个Maven projects并导入Spring-webmvc所需jar包

  1. 在IDEA中创建好基于Maven的project。
  2. 在pom.xml中导入依赖信息:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <dependencies>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.2.17.RELEASE</version>
    </dependency>

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>3.2.17.RELEASE</version>
    </dependency>
    </dependencies>

注:

  1. 直接导入这个包的原因是project项目可能需要的jar包特别多,且包之间还有依赖。直接导入一个集成的jar包,把依赖的包全自动下载了,能减少许多麻烦和问题。
  2. 记个坑:由于我的maven源使用的是阿里云的下载源,故有些jar包版本可能未及时更新,所以IDEA会显示 Dependency 'org.springframework:spring-webmvc:5.2.6.RELEASE' not found。降低版本可能会解决。

参考

  1. Java干货铺子

评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Volantis 作为主题,总访问量为

桂ICP备2021001128号