VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • 2 快速上手Spring

编写Spring程序

module:spring-02-hellospring

导入jar包

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>

编写代码

1、编写Hello实体类

package com.zzb.pojo;

public class Hello {

    private String str;

    public void setStr(String str) {
        this.str = str;
    }

    @Override
    public String toString() {
        return "Hello{" +
                "str='" + str + '\'' +
                '}';
    }
}

2、编写Spring的配置文件,名为beans.xml放在resoureces

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="hello" class="com.zzb.pojo.Hello">
        <property name="str" value="Spring"/>
    </bean>

</beans>

3、测试

import com.zzb.pojo.Hello;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    public static void main(String[] args) {

        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Hello hello = (Hello) context.getBean("hello");

        System.out.println(hello.toString());
    }
}

测试结果:

Hello{str='Spring'}

思考题

  • Hello 对象是谁创建的?——hello对象由Spring创建的。
  • Hello 对象的属性是怎么设置的?——hello 对象的属性是由Spring容器设置的。

该过程叫做控制反转

  • 控制:谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的。
  • 反转:程序本身不创建对象 , 而变成被动的接收对象 。

依赖注入 : 就是利用set方法来进行注入的。

IOC是一种编程思想,由主动的编程变成被动的接收。

修改module:spring-01-ioc1的代码

新增一个Spring的配置文件beans.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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="userDaoMysqlImpl" class="com.zzb.dao.UserDaoMysqlImpl"/>
    <bean id="userDaoOracleImpl" class="com.zzb.dao.UserDaoOracleImpl"/>

    <bean id="userServiceImpl" class="com.zzb.service.UserServiceImpl">
       <!--注意: 这里的name并不是属性 , 而是set方法后面的那部分 , 首字母小写-->
       <!--引用另外一个bean , 不是用value 而是用 ref-->
        <property name="userDao" ref="userDaoMysqlImpl"/>
    </bean>

</beans>

测试:

import com.zzb.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

        UserService user = (UserService) context.getBean("userServiceImpl");
        user.getUser();
    }
    
}

测试结果:

获取Mysql数据!

至此,要实现不同的操作,不再需要修改程序,仅需要在xml配置文件中进行修改。所谓IOC,就是对象由Spring创建,管理,装配!

IOC创建对象的方式

module:spring-03-ioc2

通过无参构造函数创建

1、User实体类

package com.zzb.pojo;

public class User {

    public User(){
        System.out.println("无参构造");
    }

    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public void show(){
        System.out.println("name: " + name);
    }
}

2、beans.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
        https://www.springframework.org/schema/beans/spring-beans.xsd">


    <bean id="user" class="com.zzb.pojo.User">
        <property name="name" value="Zzb"/>
    </bean>

</beans>

3、测试

import com.zzb.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {

    public static void main(String[] args) {

        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        User user = (User) context.getBean("user");
        user.show();
    }
}

测试结果:

无参构造
name: Zzb

通过结果,可以发现在调用User实体类的show()方法前,User对象就已经通过无参构造初始化的了!

通过有参构造方法来创建

1、实体类UserT

package com.zzb.pojo;

public class UserT {

    private String name;
    public UserT(String name){
        this.name = name;
        System.out.println("有参构造");
        System.out.println(name);
    }
}

2、beans.xml配置文件的编写

方式一:

    <!-- 第一种根据参数名字设置 -->
	<bean id="userT" class="com.zzb.pojo.UserT">
        <constructor-arg name="name" value="Zzb"/>
    </bean>

方式二:

<!-- 第二种根据index参数下标设置 -->
<bean id="userT" class="com.zzb.pojo.UserT">
   <!-- index指构造方法 , 下标从0开始 -->
   <constructor-arg index="0" value="zzb"/>
</bean>

方式三:

<!-- 第三种根据参数类型设置 -->
<bean id="userT" class="com.zzb.pojo.UserT">
   <constructor-arg type="java.lang.String" value="zzb"/>
</bean>

测试:

import com.zzb.pojo.User;
import com.zzb.pojo.UserT;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MyTest {

    public static void main(String[] args) {

        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        User user = (User) context.getBean("user");
        user.show();

        UserT userT = (UserT) context.getBean("userT");
    }
}

测试结果:

无参构造
有参构造
Zzb
name: Zzb

结论:在配置文件加载的时候。其中管理的对象都已经初始化了!

Sring的一些配置

别名

alias 设置别名,为bean设置别名,可以设置多个别名

<!--设置别名:在获取Bean的时候可以使用别名获取-->
<alias name="userT" alias="userNew"/>

bean的配置

module:spring-02-hellospring

<!--bean就是java对象,由Spring创建和管理-->

<!--
   id 是bean的标识符,要唯一,如果没有配置id,name就是默认标识符
   如果配置id,又配置了name,那么name是别名
   name可以设置多个别名,可以用逗号,分号,空格隔开
   如果不配置id和name,可以根据applicationContext.getBean(.class)获取对象;

class是bean的全限定名=包名+类名
-->
<bean id="hello" name="hello2 h2,h3;h4" class="com.kuang.zzb.Hello">
   <property name="name" value="Spring"/>
</bean>

import导入配置文件

<import resource="{path}/beans.xml"/>

通过import可以实现,多个配置文件的关联。

 

来源:https://www.cnblogs.com/zzbstudy/p/14115955.html


相关教程