1.简介

以IOC(反转控制)和AOP(面向切面编程)为内核

spring结构:

spring开发简单的流程

① 导入坐标

② 创建Bean

③ 创建applicationContext.xml

④ 在配置文件中进行配置

⑤ 创建ApplicationContext对象getBean

2.spring配置文件

  1. bean标签的基本配置

用于配置对象交由Spring 来创建。

默认情况下它调用的是类中的无参构造函数,如果没有无参构造函数则不能创建成功。

基本属性:

id:Bean实例在Spring容器中的唯一标识

class:Bean的全限定名称

  1. 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简单教程相关推荐

  1. 史上最简单的Spring Security教程(十九):AccessDecisionVoter简介及自定义访问权限投票器

    为了后续对 AccessDecisionManager 的介绍,我们先来提前对 AccessDecisionVoter 做个简单的了解,然后,在捎带手自定义一个 AccessDecisionVoter ...

  2. 史上最简单的 Spring MVC 教程(九)

    1 前言 在史上最简单的 Spring MVC 教程(五.六.七.八)等四篇博文中,咱们已经分别实现了"人员列表"的显示.添加.修改和删除等常见的增.删.改.查功能.接下来,也就是 ...

  3. 最新 Spring 系列教程,都在这了

    转载自  最新 Spring 系列教程,都在这了 Spring Boot 系列 什么是 Spring Boot? 公司不用 Spring Boot,果断离职了! 告诉你,Spring Boot 真是个 ...

  4. spring mvc教程_Spring MVC教程

    spring mvc教程 1.简介 作为企业Java开发人员,这项工作的主要重点之一是开发Web应用程序. 对于Web应用程序,后果还包括许多挑战. 具体来说,其中一些是状态管理,工作流和验证. HT ...

  5. jax-ws cxf_Apache CXF – JAX-WS –简单教程

    jax-ws cxf 许多Java开发人员都认为Web Service实现的任务艰巨-好吧,没有人能真正责怪他们,尤其是在企业应用程序开发的多年中,这给开发和设计带来了很多复杂性. 对于某些人来说,了 ...

  6. Spring Cloud教程– Spring Cloud Config Server简介

    问题 SpringBoot在通过属性或YAML文件外部化配置属性方面提供了很大的灵活性. 我们还可以使用特定于配置文件的配置文件(例如application.properties , applicat ...

  7. spring mvc 教程_Spring MVC开发–快速教程

    spring mvc 教程 这是我们的JCG合作伙伴之一,来自Manoj的有关使用Spring开发Web应用程序的简短教程, 网址为" The Khangaonkar Report &quo ...

  8. Spring Batch教程–最终指南

    这是Spring批处理教程,它是Spring框架的一部分. Spring Batch提供了可重用的功能,这些功能对于处理大量记录至关重要,包括日志记录/跟踪,事务管理,作业处理统计信息,作业重新启动, ...

  9. Apache CXF – JAX-WS –简单教程

    许多Java开发人员认为Web Service实现的任务艰巨-没人能真正责怪他们,尤其是在企业应用程序开发的多年中,这给开发和设计带来了很多复杂性. 对于某些人来说,了解它是构建完整的企业应用程序的下 ...

最新文章

  1. 加州大学信息科学院长:数据科学课程不只是工程师才修的
  2. java的方法调用中分不清_java中不太清晰的知识点
  3. Python使用Tkinter实现转盘抽奖器
  4. 祝贺Terrylee博客园Post达到100篇
  5. zipfile中怎么关闭流_深入学习JAVA -IO流详解
  6. mysql连接外部数据库名字错误_数据库连接出错! 可能出错原因:数据库位置或名称不对、数据库损坏!...
  7. c 语言程序设计形考任务一,C语言程序设计形考任务.doc
  8. MySql ALTER用法
  9. Android中SQList用法
  10. ARcore 相关学习
  11. SQL语句练习题(壹)
  12. 计算机专业如何改革创新的生力军,年轻干部如何真正成为改革创新的生力军?...
  13. 蘑菇战争 2 for Mac游戏介绍
  14. 智慧工地管理平台可视化解决方案
  15. 计算机系大一开学需要带什么,大一新生上学要不要带电脑?辅导员给出建议,家长可以参考...
  16. 推荐一个查询研究者方向和影响力的网站| 也可以查询杂志是否有专刊开放
  17. JavaWeb学习笔记(5)-B站尚硅谷
  18. 大数据必学Java基础(一百一十四):Requet域监听器
  19. ublox F9P 开发板使用指南
  20. 1到100之间不能被3整除的数之和

热门文章

  1. pod的requests、limits解读、LimitRange资源配额、Qos服务质量等级、资源配额管理 Resource Quotas
  2. 【编译原理】 实验三 LL(1)分析法(LL1分析表的自动生成)
  3. aws的eks平滑删除work节点实现降配
  4. 数字化波形声音的wav文件浅析
  5. Tensorflow 神经网络模型架构
  6. HashSet 原理结构
  7. java web logout_java – spring-security login?logout重定向到登录
  8. Makefile -fPIC 选项
  9. 计算机中选中多个文件的快捷键,电脑操作过程中同时选定多个文件的方法
  10. 【笔试面试考点】PreparedStatement和Statement的区别与联系批量插入数据的优化