zoukankan      html  css  js  c++  java
  • Spring

    1.介绍DI

    DI就是依赖注入,有一个那么高大上的词,其实就是为一个类添加一些属性,但是这个属性的实例就靠spring在来注入

    2.对象注入

    这里有5个java文件一个xml文件,基本思路,客户端调用服务实现接口的addUser方法,添加一个用户,添加用户需要把数据保存在数据库,所以服务实现类里面new一个UserDao,然后调用UserDao去执行createUser的操作

    • UserDao - 用户持久化接口
    • UserDaoImpl - 用户持久化实现类
    • UserService - 服务接口
    • UserServiceImpl - 服务实现类
    • UserServiceTest - 测试文件
    • springConfig.xml - spring配置文件

    UserDao

    public interface UserDao {
        void createUser();
    }

    UserDaoImpl

    public void createUser() {
            System.out.println("创建一个新的用户");
            
        }

    UserService

    public interface UserService {
    
        /**
         * 添加用户
         */
        void addUser();
    }

    UserServiceImpl

    public class UserServiceImpl implements UserService{
    
        private UserDao userDao;
        
        /**
         * 实现接口方法
         */
        public void addUser() {
            userDao.createUser();
        }
        
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
        public UserDao getUserDao() {
            return userDao;
        }
    }

    UserServiceTest

    public class UserServiceTest {
    
        @Test
        public void test() {
            //以前
    //        UserService userService = new UserServiceImpl();
    //        userService.addUser();
            
            /**
             * spring的写法,这是一个工厂类,这里有一个参数,参数对应配置文件的classpath位置,src为根目录
             */
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("/com/test/spring/di/springConfig.xml");
            
            //这里的参数为 配置文件中 bean id,意思就是获取 对应id实例对象
            UserService us_1 = (UserService)context.getBean("userServiceBean");
            us_1.addUser();
            
        }

    springConfig.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-4.3.xsd">
             
             <!-- 创建bean -->
            <bean id="userServiceBean" class="com.test.spring.di.UserServiceImpl">
                <!-- 注入参数,name是对应实现类中的 参数名,ref是对应bean的ID -->
                <property name="userDao" ref="userDaoBean"></property>
            </bean>
            <!-- 创建bean -->
            <bean id="userDaoBean" class="com.test.spring.di.UserDaoImpl"></bean>
    </beans>

    3. 基本类型注入

    上面看了给予对象赋值,这里看看字符串赋值,两个类,1个配置

    • Person - 对象
    • TestSetter - 测试类
    • springConfig.xml - 配置

    person

    public class Person {
    
        private String name;
        private String age;
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        
        public String getAge() {
            return age;
        }
        public void setAge(String age) {
            this.age = age;
        }
        
        @Override
        public String toString() {
            // TODO Auto-generated method stub
            return "名字 = " + getName() + " ,年龄 = " + getAge();
        }
        
    }

    配置

    <?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-4.3.xsd">
             
            <!-- 实例化对象 -->
            <bean id="person" class="com.test.spring.setter.Person">
                <!-- 第一种 写法 注入赋值 -->
                <property name="name" value="Jack"></property>
                <!-- 第二种 写法 注入赋值 -->
                <property name="age">
                    <value>13</value>
                </property>
            </bean>
    </beans>

    TestSetter

    public class TestSetter {
    
        @Test
        public void test() {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("/com/test/spring/setter/springConfig.xml");
            Person person = context.getBean("person",Person.class);
            System.out.println(person.toString());
        }
    }

    4.集合注入

    集合注入就是在property下添加子标签,不同类型有自己特有的子标签名称

    • 数组 - array
    <!-- 数组 -->
                <property name="arrayData">
                    <array>
                        <value>t1</value>
                        <value>t2</value>
                    </array>
                </property>
    • List - list
    <!-- list -->
                <property name="listData">
                    <list>
                        <value>t1</value>
                        <value>t2</value>
                    </list>
                </property>
    • Set - set
    <!-- set -->
                <property name="setData">
                    <set>
                        <value>t1</value>
                        <value>t2</value>
                    </set>
                </property>
    • Map - map
    <!-- map -->
                <property name="mapData">
                    <map>
                        <!-- 第一种方式 -->
                        <entry key="k1" value="值1"></entry>
                        <!-- 第二种方式 -->
                        <entry>
                            <key>
                                <value>k2</value>
                            </key>
                            <value>值2</value>
                        </entry>
                    </map>
                </property>
    • Properties - props
    <!-- properties -->
                <property name="propertiesData">
                    <props>
                        <prop key="k1">值1</prop>
                        <prop key="k2">值2</prop>
                    </props>
                </property>
  • 相关阅读:
    项目实战之天天酷跑(三):缓冲加载游戏界面
    项目实战之天天酷跑(二):开始游戏界面
    项目实战之天天酷跑(一):登录界面
    DBeaver安装
    基于SpringBoot+Vue开发的前后端分离博客项目完整教学
    freemarker教程
    ftl 常用指令及语法详解
    FTL 入门
    IDEA右侧Maven消失解决方法
    nodejs和npm的关系
  • 原文地址:https://www.cnblogs.com/oscar1987121/p/10875137.html
Copyright © 2011-2022 走看看