前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring-02 第一个Spring程序

Spring-02 第一个Spring程序

作者头像
张小驰出没
发布2021-04-15 17:27:50
2010
发布2021-04-15 17:27:50
举报
文章被收录于专栏:用户8506532的专栏

Spring-02 第一个Spring程序

第一个Spring程序

1.导入依赖

代码语言:javascript
复制
<dependency>
   <groupId>org.springframeworkgroupId>
   <artifactId>spring-webmvcartifactId>
   <version>5.1.10.RELEASEversion>
dependency>

2.创建实体类

代码语言:javascript
复制
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

代码语言:javascript
复制
<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="Spring" class="pojo.Spring">
        <property name="name" value="Spring"/>
    bean>

beans>

4.测试

代码语言:javascript
复制
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 = 基本数据类型

代码语言:javascript
复制
<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.测试

代码语言:javascript
复制
    @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 构建实体类
代码语言:javascript
复制
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 创建配置文件
代码语言:javascript
复制
<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 测试
代码语言:javascript
复制
    @Test
    public void test(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        User user = (User) context.getBean("user");
        user.show();
    }

2.有参构造方法

2.1 构建实体类
代码语言:javascript
复制
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参数下标设置

代码语言:javascript
复制
<bean id="userT" class="pojo.UserT">
    
    <constructor-arg index="0" value="ZC2"/>
bean>

第二种:根据参数名字设置

代码语言:javascript
复制
<bean id="userT" class="pojo.UserT">
    
    <constructor-arg name="name" value="ZC2"/>
bean>

第三种:根据参数类型设置

代码语言:javascript
复制
<bean id="userT" class="pojo.UserT">
    <constructor-arg type="java.lang.String" value="ZC2"/>
bean>
2.3 测试
代码语言:javascript
复制
    @Test
    public void test1(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        UserT usert = (UserT) context.getBean("userT1");
        usert.show();
    }

在配置文件加载的时候,其中管理的所有对象都已经初始化了,所以会出现User类的无参方法。

Spring配置

1.别名

别名 : 如果添加了别名,我们也可以使用别名获取到这个对象

代码语言:javascript
复制
<alias name="User" alias="u1">alias>

2.Bean的配置

id 是bean的标识符,要唯一; 如果没有配置id,name就是默认标识符 如果配置id,又配置了name,那么name是别名 name可以设置多个别名,可以用逗号,分号,空格隔开

代码语言:javascript
复制
<bean id="hello" name="hello2 h2,h3;h4" class="pojo.Hello">
   <property name="name" value="Spring"/>
bean>

如果不配置id和name,可以根据applicationContext.getBean(.class)获取对象; class是bean的全限定名=包名+类名

代码语言:javascript
复制
  UserT usert =  context.getBean(UserT.class);

3.import

import可以将不同的bean.xml引入到一个配置文件中。

代码语言:javascript
复制
<import resource="{path}/beans.xml"/>

个人博客为: MoYu’s Github Blog MoYu’s Gitee Blog

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring-02 第一个Spring程序
    • 第一个Spring程序
      • 1.导入依赖
      • 2.创建实体类
      • 3.创建配置文件
      • 4.测试
    • Spring案例
      • 1.创建配置文件
      • 2.测试
    • IOC创建对象方式
      • 1.无参构造方法
      • 2.有参构造方法
    • Spring配置
      • 1.别名
      • 2.Bean的配置
      • 3.import
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档