@程序员,如何快速配置 Spring?
Posted CSDN
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@程序员,如何快速配置 Spring?相关的知识,希望对你有一定的参考价值。
作者 | 阿文,责编 | 郭芮
头图 | CSDN 下载自视觉中国
出品 | CSDN(ID:CSDNnews)
什么是 spring?
抽取成方法
抽取类
可维护性好,方便进行单元测试和故障诊断,因为代码中的每一个 class 都可以单独测试,彼此之间没有联系,组件之间低耦合或者无耦合。
每个开发团队不需要关心别人写的业务逻辑,便于分工协助。
可复用性好,我们可以把具有普遍意义的组件独立出来反复使用到其他部门或其他项目中,其实这也是面向对象的思想。
生成对象的方式转为外置方式,在 Spring 中,我们把生成的对象直接写在配置文件中去定义使用,当我们需要更换一个实现类时,只需要修改配置文件即可,具有热插拔的特点。
入门 spring
maven
idea 社区版
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
spring-core 包含了 spring 框架基本的核心工具类,spring 其他组件,比如 spingboot、springcloud 都要用到它。
spring-beans 所以应用都要用到的 jar 包,它包含了访问配置文件、创建和管理 bean 以及进行 Ioc和 DI 操作的相关类。
spring-context 提供了基础的 IoC 功能上的扩展服务。还提供了远程访问、缓存、邮件服务等各种试图层框架的封装。
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-4.3.xsd">
<!--
xmlns 即 xml namespace xml 使用的命名空间
xmlns:xsi 即 xml schema instance xml 遵守的具体规范
xsi:schemaLocation 本文档 xml 遵守的规范 官方指定
-->
<bean id="userService" class="org.example.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
<bean id="userDao" class="org.example.UserDaoImpl"></bean>
</beans>
getBea(String name) 可根据 Bean 的 id 生成 Bean 对象。
getBean(String name,Class requiredType) 可根据 Bean 的 id 和响应类生成 Bean 的对象。
提供访问资源更方便。
支持国际化消息。
提供文件消息解析的方法
可以发布事件。
FileSystemXmlApplicationContext,从文件使用绝对路径引入 xml 文件加载上下文。
ClassPathXmlApplicationContext,从类路径的 XML 中加载上下文。
XmlWebApplicationContext,从 Web 系统中的 XML 加载上下文。
属性 setter 方法注入
通过构造方法注入
package org.example;
public interface UserDao {
public void login();
}
package org.example;
public class UserDaoImpl implements UserDao{
@Override
public void login() {
System.out.println("UserDao login");
}
}
<bean id="UserDao" class="org.example.UserDaoImpl"></bean>
package org.example;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class IoC {
public static void main(String[] args) {
//1.初始化 Spring 容器,加载配置文件
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("applicationContext.xml");
//2.通过容器获取 UserDao实例
UserDao userDao = (UserDao) applicationContext.getBean("UserDao");
userDao.login();
}
}
package org.example;
public interface UserService {
public void login();
}
package org.example;
public class UserServiceImpl implements UserService {
//声明 UserDao 属性
private UserDao userDao;
//添加 userDao 属性的 setter()方法,用于实现依赖注入
public void setUserDao(UserDao userDao){
this.userDao = userDao;
}
//实现接口中的方法
@Override
public void login() {
this.userDao.login(); //调用 userDao 中的 login() 方法
System.out.println("userService login");
}
}
<bean id="userService" class="org.example.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
<bean id="UserDao" class="org.example.UserDaoImpl"></bean>
package org.example;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DI {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) applicationContext.getBean("userService");
userService.login();
}
}
今日福利:评论区留言入选,都可获得价值299元的「2020 AI开发者万人大会」在线直播门票一张。 快来动动手指,写下你想说的话吧
☞
☞
以上是关于@程序员,如何快速配置 Spring?的主要内容,如果未能解决你的问题,请参考以下文章