Spring(一)
Spring框架部署
Spring 基础模块说明
核心容器模块(IOC容器):Core Container。
包含Beans,core,context,expression 这四个Jar包。
手动导包:
spring-beans-4.0.0.M2.jar
spring-context-4.0.0.M2.jar
spring-core-4.0.0.M2.jar
spring-expression-4.0.0.M2.jar
·导包具体过程请百度·
Maven导包:
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.18.RELEASE</version>
</dependency>
maven具体使用方法请百度
创建Spring配置文件
XML文件类型的Spring配置文件
<?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">
</beans>
其实也就是一个XML文件,<beans>里的是相关命名空间
命名空间相关知识可以看这篇文章
我来说说XML文件中的xmlns、xmlns:xsi和xsi:schemaLocation、dtd文件的具体含义
Spring配置类(Spring4.0以后支持并推荐使用的Spring配置文件方式)
/**
* @Configuration 标明此类为 spring配置类
*/
@Configuration
public class SpringConfig {
}
Spring框架部署到这里就算完成了,归纳起来就两步:1.导包 2.创建配置文件。导包方式分两种,手动导入和使用maven(一般项目中都会使用maven,手动好麻烦)。配置文件在4.0之后支持了配置类的形式进行创建具体用法之后会有讲
Spring配置文件分析
创建Bean
核心容器(Spring core)提供Spring框架的基本功能。Spring以bean的方式组织和管理Java应用中的各个组件及其关系。Spring使用BeanFactory来产生和管理Bean,它是工厂模式的实现。BeanFactory(Bean工厂)使用控制反转(IoC)模式将应用的配置和依赖性规范与实际的应用程序代码分开。BeanFactory使用依赖注入的方式提供给组件依赖。——引自Spring 7大功能模块的作用[转]
为了体现Spring的IOC,我们首先需要创建一些让Spring进行管理的Bean
public class User {
int id;
String username;
String password;
int age;
/**
无参构造方法,spring默认使用无参构造方法进行对象创建。
JAVA基础:类创建了有参构造方法后默认的无参构造方法将不会创建
所以当我们创建了有参构造方法后还需要创建一个无参构造方法
*/
public User() {
}
public User(int id, String username, String password, int age) {
this.id = id;
this.username = username;
this.password = password;
this.age = age;
}
/**
属性的get/set方法,Spring默认使用属性对应的get/set方法进行赋值取值
*/
/**
重写 toSting 方法单纯只是方便我们进行测试,实际使用中并不需要
*/
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
'}';
}
}
这样一个Bean文件就创建好了,结构:1.Bean的类名 2.属性 3.无参构造方法 4.属性的get/set方法
使用Spring配置文件对Bean进行管理
Spring配置类方式
/**
* @Configuration 标明此类为 spring配置类
*/
@Configuration
public class SpringConfig {
/**
* @Value 获取资源文件中数据并将其赋值给变量
*/
@Value("${user}")
public String name;
/**
* @Bean 表名此方法为 Bean。
* name 为 value 的别名,两个属性都用于标明 bean 的唯一标识符,默认值为方法名
*
*/
@Bean(name = "uss")
public User getUser(){
return new User(0,"张三","zhangsan",10);
}
@Bean
public User user(){
return new User(0,"李四","zhangsan",10);
}
}
XML配置文件方式
<!-- 配置一个 bean -->
<!--
通过框架创建对象
id : Bean唯一标识符
class : 对象所属类的路径
-->
<bean id="user" class="com.toyBrickBoy.object.beans.User">
<!--
为属性赋值
![CDATA[]] : 值存在违规字符时使用<![CDATA[value]]>的方式进行赋值
property : 为对象的属性赋值
name : 值对应对象的某个属性
value : 调用属性对应的set方法时传递的参数(基本数据类型+字符串)
ref : 调用属性对应的set方法传递的参数(对象)
-->
<property name="id" value="10"></property>
<property name="username">
<value>张三</value>
</property>
</bean>
<!--
constructor-arg : 调用构造方法为属性赋值
value : 调用构造方法时传递的参数(基本数据类型+字符串)
ref : 调用构造方法时传递的参数(对象)
type : 根据参数类型进行赋值 (多个相同类型时尽量避免使用)
name : 根据参数名进行赋值
index : 根据参数位置进行赋值(位置从0开始)
-->
<bean id="uu" class="com.toyBrickBoy.object.beans.User">
<constructor-arg index="0" value="10"/>
<constructor-arg name="username" value="王五"/>
<constructor-arg name="password" value="wangwu"/>
<constructor-arg type="int" value="102"/>
</bean>
创建main方法进行验证
public static void main(String[] args) {
/**
* ApplicationContext 接口
* ApplicationContext的中文意思是“应用前后关系”,它继承自BeanFactory接口,除了包含BeanFactory的所有功能之外,
* 在国际化支持、资源访问(如URL和文件)、事件传播等方面进行了良好的支持,
* 被推荐为Java EE应用之首选,可应用在Java APP与Java Web中。
* ConfigurableApplicationContext 接口继承 ApplicationContext 定义了 close 方法
*
*/
/**
* 读取XML配置文件信息并创建对象
* ClassPathXmlApplicationContext : 从类路径读取配置文件
* FileSystemXmlApplicationContext : 从文件路径读取配置文件
*/
ApplicationContext cpac = new ClassPathXmlApplicationContext("SpringConfig.xml");
/**
* 读取配置类信息并创建对象
* AnnotationConfigApplicationContext : 加载配置类信息,可同时加载多个类
*/
ConfigurableApplicationContext acac = new AnnotationConfigApplicationContext(SpringConfig.class);
/**
* getBean : 获取IOC容器中的对象bean,参数为Bean的唯一标识符
*/
User user = (User)acac.getBean("uss");
User uu = (User)cpac.getBean("uu");
System.out.println(user);
acac.close();
}
总结
这样一个简单的Spring就搞定了,当然实际使用中不会这么简陋
基本步骤:
- 导包
- 手动导包
- maven导包
- 创建Spring配置文件
- 配置类方式的配置文件
- XML文件方式的配置文件
- 创建Bean类
- 使用配置文件创建Bean对象
- main方法加载配置文件