spring简单教程
1.简介
以IOC(反转控制)和AOP(面向切面编程)为内核
spring结构:
spring开发简单的流程
① 导入坐标
② 创建Bean
③ 创建applicationContext.xml
④ 在配置文件中进行配置
⑤ 创建ApplicationContext对象getBean
2.spring配置文件
- bean标签的基本配置
用于配置对象交由Spring 来创建。
默认情况下它调用的是类中的无参构造函数,如果没有无参构造函数则不能创建成功。
基本属性:
id:Bean实例在Spring容器中的唯一标识
class:Bean的全限定名称
- Bean标签范围配置
scope:指对象的作用范围,取值如下:
1)当scope的取值为singleton时
Bean的实例化个数:1个
Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例
Bean的生命周期:
对象创建:当应用加载,创建容器时,对象就被创建了
对象运行:只要容器在,对象一直活着
对象销毁:当应用卸载,销毁容器时,对象就被销毁了
2)当scope的取值为prototype时
Bean的实例化个数:多个
Bean的实例化时机:当调用getBean()方法时实例化Bean
对象创建:当使用对象时,创建新的对象实例
对象运行:只要对象在使用中,就一直活着
对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了
3.Bean的依赖注入
原先的写法
UserServiceImpl类中(业务层实现):
@Overridepublic void save() {ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");UserDao userDao = (UserDao) app.getBean("userDao");userDao.save();}
UserController类中(表现层):
public class UserController {public static void main(String[] args) {ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");UserService userService =(UserService) app.getBean("userServiceImpl");userService.save();}
}
可以清晰地看到目前UserService实例和UserDao实例都存在与Spring容器中,当前的做法是在容器外部获得UserService实例和UserDao实例,然后在程序中进行结合
依赖注入的写法
UserServiceImpl类中(业务层实现):
public class UserServiceImpl implements UserService {private UserDao userDao;@Overridepublic void save() {userDao.save();}public void setUserDao(UserDao userDao) {this.userDao = userDao;}
}
配置文件中:
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"></bean><bean id="userServiceImpl" class="com.itheima.com.itheima.service.impl.UserServiceImpl"><property name="userDao" ref="userDao"></property></bean>
因为UserService和UserDao都在Spring容器中,而最终程序直接使用的是UserService,所以可以在Spring容器中,将UserDao设置到UserService内部。
Bean的依赖注入的数据类型
上面的操作是注入的引用bean,除了对象的引用可以注入,普通的数据类型、引用集合类等都可以在容器中进行注入。
普通数据类型的注入:
public class UserDaoImpl implements UserDao {private String username;private int age;@Overridepublic void save() {System.out.println(username+"====="+age);System.out.println("save running......");}public void setUsername(String username) {this.username = username;}public void setAge(int age) {this.age = age;}
}
配置文件:
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"><property name="username" value="hongjinyuan"/><property name="age" value="21"/></bean>
简单小结
4.Spring配置数据源
配置数据源的作用
• 数据源(连接池)是提高程序性能如出现的
• 事先实例化数据源,初始化部分连接资源
• 使用连接资源时从数据源中获取
• 使用完毕后将连接资源归还给数据源
数据源开发步骤
① 导入数据源的坐标和数据库驱动坐标
② 创建数据源对象
③ 设置数据源的基本连接数据
④ 使用数据源获取连接资源和归还连接资源
5.Spring注解开发
spring是轻代码重配置的框架,配置非常繁重,影响开发效率,所以注解开发是一种趋势,注解替代xml配置文件可以做到简化配置,提高开发效率。
Spring原始注解
注意:使用注解进行开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下的Bean需要进行扫描以便识别使用注解配置的类、字段和方法,相当于告诉spring哪些包下面的类使用了注解注入
<context:component-scan base-package="com.itheima"></context:component-scan>
原始注解的含义
- 使用@Compont或@Repository标识UserDaoImpl需要Spring进行实例化
- 使用@Compont或@Service标识UserServiceImpl需要Spring进行实例化
- 使用@Autowired或者@Autowired+@Qulifier或者@Resource进行userDao的注入
注意:这里的实例化含义是将这个类实例(相当于new一个对象)然后放进spring容器里,而注入则是从容器中取出实例注入到这个变量中
使用@Value进行字符串的注入
使用@Scope标注Bean的范围 (例如单例:@Scope(“singleton”))
使用@PostConstruct标注初始化方法,使用@PreDestroy标注销毁方法
-使用@PostConstruct标注初始化方法,使用@PreDestroy标注销毁方法
Spring新注解的含义
(例如单例:@Scope(“singleton”))
spring简单教程相关推荐
- 史上最简单的Spring Security教程(十九):AccessDecisionVoter简介及自定义访问权限投票器
为了后续对 AccessDecisionManager 的介绍,我们先来提前对 AccessDecisionVoter 做个简单的了解,然后,在捎带手自定义一个 AccessDecisionVoter ...
- 史上最简单的 Spring MVC 教程(九)
1 前言 在史上最简单的 Spring MVC 教程(五.六.七.八)等四篇博文中,咱们已经分别实现了"人员列表"的显示.添加.修改和删除等常见的增.删.改.查功能.接下来,也就是 ...
- 最新 Spring 系列教程,都在这了
转载自 最新 Spring 系列教程,都在这了 Spring Boot 系列 什么是 Spring Boot? 公司不用 Spring Boot,果断离职了! 告诉你,Spring Boot 真是个 ...
- spring mvc教程_Spring MVC教程
spring mvc教程 1.简介 作为企业Java开发人员,这项工作的主要重点之一是开发Web应用程序. 对于Web应用程序,后果还包括许多挑战. 具体来说,其中一些是状态管理,工作流和验证. HT ...
- jax-ws cxf_Apache CXF – JAX-WS –简单教程
jax-ws cxf 许多Java开发人员都认为Web Service实现的任务艰巨-好吧,没有人能真正责怪他们,尤其是在企业应用程序开发的多年中,这给开发和设计带来了很多复杂性. 对于某些人来说,了 ...
- Spring Cloud教程– Spring Cloud Config Server简介
问题 SpringBoot在通过属性或YAML文件外部化配置属性方面提供了很大的灵活性. 我们还可以使用特定于配置文件的配置文件(例如application.properties , applicat ...
- spring mvc 教程_Spring MVC开发–快速教程
spring mvc 教程 这是我们的JCG合作伙伴之一,来自Manoj的有关使用Spring开发Web应用程序的简短教程, 网址为" The Khangaonkar Report &quo ...
- Spring Batch教程–最终指南
这是Spring批处理教程,它是Spring框架的一部分. Spring Batch提供了可重用的功能,这些功能对于处理大量记录至关重要,包括日志记录/跟踪,事务管理,作业处理统计信息,作业重新启动, ...
- Apache CXF – JAX-WS –简单教程
许多Java开发人员认为Web Service实现的任务艰巨-没人能真正责怪他们,尤其是在企业应用程序开发的多年中,这给开发和设计带来了很多复杂性. 对于某些人来说,了解它是构建完整的企业应用程序的下 ...
最新文章
- 加州大学信息科学院长:数据科学课程不只是工程师才修的
- java的方法调用中分不清_java中不太清晰的知识点
- Python使用Tkinter实现转盘抽奖器
- 祝贺Terrylee博客园Post达到100篇
- zipfile中怎么关闭流_深入学习JAVA -IO流详解
- mysql连接外部数据库名字错误_数据库连接出错! 可能出错原因:数据库位置或名称不对、数据库损坏!...
- c 语言程序设计形考任务一,C语言程序设计形考任务.doc
- MySql ALTER用法
- Android中SQList用法
- ARcore 相关学习
- SQL语句练习题(壹)
- 计算机专业如何改革创新的生力军,年轻干部如何真正成为改革创新的生力军?...
- 蘑菇战争 2 for Mac游戏介绍
- 智慧工地管理平台可视化解决方案
- 计算机系大一开学需要带什么,大一新生上学要不要带电脑?辅导员给出建议,家长可以参考...
- 推荐一个查询研究者方向和影响力的网站| 也可以查询杂志是否有专刊开放
- JavaWeb学习笔记(5)-B站尚硅谷
- 大数据必学Java基础(一百一十四):Requet域监听器
- ublox F9P 开发板使用指南
- 1到100之间不能被3整除的数之和
热门文章
- pod的requests、limits解读、LimitRange资源配额、Qos服务质量等级、资源配额管理 Resource Quotas
- 【编译原理】 实验三 LL(1)分析法(LL1分析表的自动生成)
- aws的eks平滑删除work节点实现降配
- 数字化波形声音的wav文件浅析
- Tensorflow 神经网络模型架构
- HashSet 原理结构
- java web logout_java – spring-security login?logout重定向到登录
- Makefile -fPIC 选项
- 计算机中选中多个文件的快捷键,电脑操作过程中同时选定多个文件的方法
- 【笔试面试考点】PreparedStatement和Statement的区别与联系批量插入数据的优化