Spring-02 第一个Spring程序
Spring-02 第一个Spring程序
第一个Spring程序
1.导入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.10.RELEASE</version>
</dependency>
2.创建实体类
public class Spring {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show(){
System.out.println( name );
}
}
3.创建配置文件
创建Spring配置文件,命名为: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.xsd">
<!--bean就是java对象 , 由Spring创建和管理-->
<bean id="Spring" class="pojo.Spring">
<property name="name" value="Spring"/>
</bean>
</beans>
4.测试
public class SpringTest {
@Test
public void FirstSpring(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Spring spring = (Spring) context.getBean("Spring");
spring.show();
}
}
思考:
- Hello 对象是谁创建的 ? hello 对象是由Spring创建的
- Hello 对象的属性是怎么设置的 ? hello 对象的属性是由Spring容器设置的
这个过程就叫控制反转 :
- 控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的
- 反转 : 程序本身不创建对象 , 而变成被动的接收对象 .
依赖注入 : 就是利用set方法来进行注入的.
IOC是一种编程思想,由主动的编程变成被动的接收
Spring案例
接着本博客Spring-01
文章中的案例,进行Spring配置。
1.创建配置文件
使用Spring来创建对象,在spring中这些都被称为Bean
类型 变量名 = new 类型(); 例如:Hello hello = new Hello();
id = 变量名
class = new 的对象
property = 相当于给对象的数性设置一个值
name = name并不是属性 , 而是set方法后面的那部分 , 首字母小写
ref = 引用spring中创建好的对象 ,引用另一个bean的id
value = 基本数据类型
<?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">
<bean id="MysqlImpl" class="Dao.Sql.UserDaoMySqlImpl"/>
<bean id="OracleImpl" class="Dao.Sql.UserDaoOracleImpl"/>
<bean id="ServiceImpl" class="Service.UserServiceImpl">
<property name="userDao" ref="OracleImpl"/>
</bean>
</beans>
2.测试
@Test
public void Spring(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
UserServiceImpl serviceImpl = (UserServiceImpl) context.getBean("ServiceImpl");
serviceImpl.getUser();
}
本次引用的是OracleImpl
,结果为:
不用再程序中去改动了 , 要实现不同的操作 , 只需要在xml配置文件中进行修改,所谓的IoC,就是对象由Spring 来创建 , 管理 , 装配 !
IOC创建对象方式
1.无参构造方法
1.1 构建实体类
public class User {
private String name;
public User() {
System.out.println("user无参构造方法");
}
public void setName(String name) {
this.name = name;
}
public void show(){
System.out.println("name="+ name );
}
}
1.2 创建配置文件
<?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">
<bean id="user" class="pojo.User">
<property name="name" value="ZC"/>
</bean>
</beans>
1.3 测试
@Test
public void test(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
User user = (User) context.getBean("user");
user.show();
}
2.有参构造方法
2.1 构建实体类
public class UserT {
private String name;
public UserT(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public void show(){
System.out.println("name="+ name );
}
}
2.2 构建配置文件
bean.xml
有三种方式编写
第一种:根据index参数下标设置
<bean id="userT" class="pojo.UserT">
<!-- index指构造方法 , 下标从0开始 -->
<constructor-arg index="0" value="ZC2"/>
</bean>
第二种:根据参数名字设置
<bean id="userT" class="pojo.UserT">
<!-- name指参数名 -->
<constructor-arg name="name" value="ZC2"/>
</bean>
第三种:根据参数类型设置
<bean id="userT" class="pojo.UserT">
<constructor-arg type="java.lang.String" value="ZC2"/>
</bean>
2.3 测试
@Test
public void test1(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
UserT usert = (UserT) context.getBean("userT1");
usert.show();
}
在配置文件加载的时候,其中管理的所有对象
都已经初始化了,所以会出现User类的无参方法。
Spring配置
1.别名
别名 : 如果添加了别名,我们也可以使用别名获取到这个对象
<alias name="User" alias="u1"></alias>
2.Bean的配置
id 是bean的标识符,要唯一;
如果没有配置id,name就是默认标识符
如果配置id,又配置了name,那么name是别名
name可以设置多个别名,可以用逗号,分号,空格隔开
<bean id="hello" name="hello2 h2,h3;h4" class="pojo.Hello">
<property name="name" value="Spring"/>
</bean>
如果不配置id和name,可以根据applicationContext.getBean(.class)获取对象;
class是bean的全限定名=包名+类名
UserT usert = context.getBean(UserT.class);
3.import
import
可以将不同的bean.xml引入到一个配置文件中。
<import resource="{path}/beans.xml"/>
Spring-02 第一个Spring程序的更多相关文章
- spring之第一个spring程序
spring具体描述: 轻量级 IOC:依赖注入 AOP:面向切片编程 容器:spring是一个容器,包含并且管理应用的生命周期 框架 一站式 一.搭建spring开发环境 在eclipse中新建一个 ...
- 【Spring】创建一个Spring的入门程序
3.创建一个Spring的入门程序 简单记录 - Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)- Spring的基本应用 Spring与Spring MVC的 ...
- 02第一个OC程序
一.打开XCode4.6.3,新建项目 二.选择Application下的命名行项目 三.输入项目名称,选择Foundation框架创建项目,点击Next 四.二话不说.点击Run.启动我们创建的项目 ...
- 峰哥说技术:02-第一个Spring Boot应用程序
Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 02第一个Spring Boot应用程序 1.版本要求 集成开发环境:IntelliJ IDEA 2017 ...
- 第一章 第一个spring boot程序(转载)
第一章 第一个spring boot程序 本编博客转发自:http://www.cnblogs.com/java-zhao/p/5324185.html 环境: jdk:1.8.0_73 mave ...
- 第一个Spring MVC程序
最近公司项目要开始使用Spring MVC替代Struts2了,就学习了一下Spring MVC的使用.这是第一个Spring mvc程序,分别使用xml和注解两种方式. 一.使用xml格式进行构建 ...
- 2、Spring的 IoC详解(第一个Spring程序)
Spring是为了解决企业应用开发的复杂性而创建的一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架.在这句话中重点有两个,一个是IoC,另一个是AOP.今天我们讲第一个IoC. IoC概念 ...
- 我的第一个spring boot程序(spring boot 学习笔记之二)
第一个spring boot程序 写在前面:鉴于spring注解以及springMVC的配置有大量细节和知识点,在学习理解之后,我们将直接进入spring boot的学习,在后续学习中用到注解及其他相 ...
- 第一个Spring Boot程序
Windows 10家庭中文版,java version "1.8.0_152", Eclipse Oxygen.1a Release (4.7.1a),Spring Tools ...
- 干净win7要做几步才能运行第一个Spring MVC 写的动态web程序
干净win7要做几步才能运行第一个Spring MVC 写的动态web程序: 1. 下载安装jdk 2. 配置Java环境变量 3. 测试一下第1,2两步是否完全成功:http://jingyan.b ...
随机推荐
- zabbix设置告警
1.配置告警媒介 邮件: 微信: #!/usr/bin/env python # -*- coding: utf-8 -*- import urllib,urllib2,datetime,hashli ...
- (28)Vim 4
1.Vim多窗口编辑 在编辑文件时,有时需要参考另一个文件,如果在两个文件之间进行切换则比较麻烦.可以使用 Vim 同时打开两个文件,每个文件分别占用一个窗口. 例如,在査看 /etc/passwd ...
- 利用ELK构建一个小型的日志收集平台
利用ELK构建一个小型日志收集平台 伴随着应用以及集群的扩展,查看日志的方式总是不方便,我们希望可以有一个便于我们查询及提醒功能的平台:那么首先需要剖析有几步呢? 格式定义 --> 日志收集 - ...
- Educational Codeforces Round 97 (Rated for Div. 2)【ABCD】
比赛链接:https://codeforces.com/contest/1437 A. Marketing Scheme 题解 令 \(l = \frac{a}{2}\),那么如果 \(r < ...
- hdu5637 Transform (bfs+预处理)
Problem Description A list of n integers are given. For an integer x you can do the following operat ...
- Codeforces Round #645 (Div. 2) D、The Best Vacation
题目链接:The Best Vacation 题意: 给你n个月份,每一个月份有di天.你可以呆在那里x天(x天要连续),如果你在某月的第y天呆在这.那么你的拥抱值就加y 1<=n<=2e ...
- JavaScript——四
引用案例:事件只能执行一次 array里面都是事件对象 点击box3区域时,则会有事件冒泡现象,即:box3响应后,box2(比他大一节)的区域,box1(比box2大一级)相应出现响应事件现象 捕获 ...
- linux下安装python3.7.2
1.到python的官网去下载python3.7.2安装包,必须是Linux版本的 2.在/usr/tmp下下载python安装包 wget https://www.python.org/ftp/py ...
- EFCore学习记录--数据访问技术人门
1.安装Microsoft.EntityFrameworkCore.Sqlite.Microsoft.EntityFrameworkCore.Tools包2.创建模型 数据库上下文模型:Bloggin ...
- Win10 资源管理器经常卡死问题
什么问题? 我的Win10资源管理器开始出现卡死(假死.未响应)的情况,频率越来越高,触发方式越来越广,包括OpenDialog.打开拥有快捷方式的文件夹/桌面.右键空白处.右键文件/文件夹.拖动文件 ...