Spring(1)—初识
- Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
- 特点:
轻量——从大小与开销两方面而言Spring都是轻量的。
控制反转——Spring通过一种称作控制反转(IoC)的技术促进了低耦合。
面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发
容器——Spring包含并管理应用对象的配置和生命周期
其中最重要的就是AOP和IOC - 一个HelloWorld案例
1.jar包
commons-logging-1.1.1.jar
spring-aop-4.0.0.RELEASE.jar
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
2.类HelloWorld
public class HelloWorld {
public void hello(){
System.out.println("欢迎学习Spring框架!");
}
}
3.新建配置文件applicationContext.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-3.2.xsd">
<!-- 配置Bean -->
<bean id="helloWorld" class="com.test.hello.HelloWorld"></bean>
</beans>
4.测试类TestHelloWorld
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestHelloWorld {
public static void main(String[] args) {
//1.加载applicationContext.xml文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.获取配配置中的实例
HelloWorld helloWorld = (HelloWorld) ctx.getBean("helloWorld");
helloWorld.hello();
}
}
运行结果:
Biz's setter...(这行字符是下一个案例中输出的,用于说明,一旦加载了applicationContext.xml配置文件中的Bean不管有没有执行这段代码,Spring容器都会立即向setter方法中执行注入)
欢迎学习Spring框架!
4 . 一个login案例
因为上一个案例已经把jar包导进来了所以直接上代码
①目录结构
②接口及接口的实现类
接口:UserBiz、UserDAO
实现类:UserBizImpl、UserDAOImpl
//UserBiz
public interface UserBiz {
public boolean login(String username, String password);
}
//UserBizImpl
import com.test.login.Biz.UserBiz;
import com.test.login.dao.UserDAO;
public class UserBizImpl implements UserBiz {
//使用userDAO接口声明一个对象
UserDAO userDAO;
//并为其添加set方法,用于依赖注入
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
System.out.println("Biz's setter...");
}
@Override
public boolean login(String username, String password) {
return userDAO.login(username, password);
}
}
//UserDAO
public interface UserDAO {
public boolean login(String username, String password);
}
//UserDAOImpl
import com.test.login.dao.UserDAO;
public class UserDAOImpl implements UserDAO {
@Override
public boolean login(String username, String password) {
if(username.equals("admin") && password.equals("123")){
return true;
}
return false;
}
}
③配置applicationContext.xml
<?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-3.2.xsd">
<!-- 配置Bean -->
<bean id="helloWorld" class="com.test.hello.HelloWorld"></bean>
<!-- 配置创建UserDAOImpl的实例 -->
<bean id="userDAO" class="com.test.login.dao.Impl.UserDAOImpl"></bean>
<!-- 配置创建UserBizImpl的实例,其实现原理是使用反射机制 -->
<bean id="userBiz" class="com.test.login.Biz.Impl.UserBizImpl">
<!-- 引用UserDAOImpl的Bean实例,其实现原理是使用setter方法 -->
<property name="userDAO" ref="userDAO"></property>
</bean>
</beans>
④测试类TestSpringDI
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.test.login.Biz.UserBiz;
public class TestSpringDI {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
UserBiz userBiz = (UserBiz) ctx.getBean("userBiz");
System.out.println(userBiz.login("admin", "123"));
}
}
⑤结果:
Biz's setter...
true
Spring(1)—初识的更多相关文章
- spring transaction 初识
spring 事务初识 1.spring事务的主要接口,首先盗图一张,展示出spring 事务的相关接口.Spring并不直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给Hibern ...
- spring之初识Ioc&Aop
Spring框架的作用 spring是一个轻量级的企业级框架,提供了ioc容器.Aop实现.dao/orm支持.web集成等功能,目标是使现有的java EE技术更易用,并促进良好的编程习惯. Spr ...
- Spring Boot 初识
发展到今天,spring已经是一个大家族了,如果想要使用其中的两到三个组件就会有多复杂的配置,有时候还有会版本不一致的错误,让人很无奈.于是,就有了spring Boot,spring Boot ...
- Spring Boot初识(4)- Spring Boot整合JWT
一.本文介绍 上篇文章讲到Spring Boot整合Swagger的时候其实我就在思考关于接口安全的问题了,在这篇文章了我整合了JWT用来保证接口的安全性.我会先简单介绍一下JWT然后在上篇文章的基础 ...
- Spring Boot初识(3)- Spring Boot整合Swagger
一.本文介绍 如果Web项目是完全前后端分离的话(我认为现在完全前后端分离已经是趋势了)一般前端和后端交互都是通过接口的,对接口入参和出参描述的文档就是Mock文档.随着接口数量的增多和参数的个数增加 ...
- Spring Boot初识(2)- Spring Boot整合Mybaties
一.本文介绍 首先读这篇文章之前如果没有接触过Spring Boot可以看一下之前的文章,并且读这篇文章还需要你至少能写基本的sql语句.我在写这篇文章之前也想过到底是选择JPA还是Mybaties作 ...
- Spring Boot初识(1)-了解Spring Boot
写在前面:半年工作经验的Java程序员一枚,奈何公司用的是自研的Web框架和RPC框架,本着good good study,day day up的精神和为以后发展的考虑觉得自己需要学点开源的东西,写的 ...
- spring batch初识
Spring Batch是什么? Spring Batch是一个基于Spring的企业级批处理框架,按照我师父的说法,所有基于Spring的框架都是使用了spring的IoC特性,然后加上自己的一些 ...
- 【Spring Boot&&Spring Cloud系列】Spring Boot初识
项目代码地址:https://github.com/AndyFlower/Spring-Boot-Learn/tree/master/Spring-boot-helloworld 一.Spring B ...
随机推荐
- JSP基础知识➣Cookie和Session(五)
JSP Cookie 处理 Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息.在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持.JSP脚本通过request对象 ...
- 搭建自己的docker仓库
https://docs.docker.com/registry/deploying/#run-a-local-registry https://docs.docker.com/registry/in ...
- JMeter通过自定义jar调用和BeanShell源码
自定义jar包引用 原始java代码,代码的作用的是根据指定的字符串,生成执行长度的随机字符串 package com; import java.util.Random; public class r ...
- mysql配置为半同步复制
mysql 半同步插件是由谷歌提供,具体位置/usr/local/mysql/lib/plugin/下,一个是 master用的 semisync_master.so,一个是 slave 用的 sem ...
- dfs和bfs的区别
详见转载博客:https://www.cnblogs.com/wzl19981116/p/9397203.html 1.dfs(深度优先搜索)是两个搜索中先理解并使用的,其实就是暴力把所有的路径都搜索 ...
- HDU 1010 Tempter of the Bone (DFS+可行性奇偶剪枝)
<题目链接> 题目大意:一个迷宫,给定一个起点和终点,以及一些障碍物,所有的点走过一次后就不能再走(该点会下陷).现在问你,是否能从起点在时间恰好为t的时候走到终点. 解题分析:本题恰好要 ...
- Python虚拟环境的安装和配置-virtualenv与windows下多个python版本共存
Python虚拟环境的安装和配置-virtualenv与windows下多个python版本共存 windows下多个python版本共存 https://www.python.org/downloa ...
- 转载:ThreadPoolExecutor 源码阅读
前言 之前研究了一下如何使用ScheduledThreadPoolExecutor动态创建定时任务(Springboot定时任务原理及如何动态创建定时任务),简单了解了ScheduledThreadP ...
- Django 学习第八天——Django模型基础第三节
一.表关系的实现: 一对一:OneToOne(外键+唯一键) xxx = models.OneToOneField('关联的表',on_delete=models.CASCADE) 外键和一对一关系的 ...
- 涂鸦之作WanAndroid第三方APP
Wan Android App Introduction 我的涂鸦之作,正如名字一样 这个一个WanAndroid 的第三方Android客户端,采用MVP架构+Kotlin语言+一大堆轮子.现在的代 ...