zoukankan      html  css  js  c++  java
  • Spring笔记

    1.使用spring需要加的jar包

    commons-logging

    spring-core

    spring-beans

    spring-expression

    spring-context

     图中可以看出spring-context是最底下的包 只需要引入

    <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.25.RELEASE</version>
          </dependency>

    2.引入xml文件的方式

    BeanFactory bf = new ClassPathXmlApplicationContext("Spring.xml");
    BeanFactory bf = new FileSystemXmlApplicationContext("D:Spring.xml");
    BeanFactory bf = new ClassPathXmlApplicationContext("classpath*:Spring*");//引入以Spring开头的文件

    3.Spring.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"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:p="http://www.springframework.org/schema/p"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-4.1.xsd
    ">
    
    <!--    启用注解,可以不加,会自动开启-->
        <context:annotation-config></context:annotation-config>
    <!--告诉他去找哪些路径下的类-->
        <context:component-scan base-package="com.blb"></context:component-scan>
    
        <bean id="c3p0" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
            <property name="jdbcUrl" value="jdbc:mysql://localhost:6666/haha"></property>
            <property name="user" value="root"></property>
            <property name="password" value="123456"></property>
        </bean>
    
    <!--property可用p代替-->
        <bean id="c3p02" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        p:driverClass="com.mysql.jdbc.Driver"
        p:jdbcUrl="jdbc:mysql://localhost:6666/haha"
        p:user="root"
        p:password="123456"
        >
        </bean>
    
    
    
    
    
        <!--    注入方式2构造器注入,index标识第几个参数,ref是参数类型,value传入的值-->
        <bean id="queryRunner" class="org.apache.commons.dbutils.QueryRunner">
            <constructor-arg index="0" ref="c3p0"></constructor-arg>
        </bean>
    
    <!--    注入前提属性要有set方法-->
        <bean id="pink" class="com.blb.dto3.Pink">
            <property name="pid" value="1"></property>
            <property name="color" value="grenn"></property>
        </bean>
    
    
    </beans>

    4.加注解的方式加入ioc容器

    @Service 用来标注业务层 只要标注了改注解的类 会自动加入到ioc容器
    @Controller 控制层
    @Repository 持久层
    @Component 其他
    不强制对应
    自己写的类可以加注释, jar包里的类不能用,只能用原始的方式加到ioc容器


    @Autowired 就是bytype 加在属性上
    @Resource 就是byname 现根据名字找。找不到再根据类型找

    controller:

    package com.blb.controller;
    
    import com.blb.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    
    @Controller
    public class UserController {
        @Autowired
        private UserService userService;
    
        public UserService getUserService() {
            return userService;
        }
    
        public void setUserService(UserService userService) {
            this.userService = userService;
        }
    }

    service:

    package com.blb.service;
    
    import com.blb.dao.UserDao;
    import org.springframework.stereotype.Service;
    
    import javax.annotation.Resource;
    
    @Service
    public class UserService {
        @Resource
        private UserDao userdao;
    
        public UserDao getDao() {
            return userdao;
        }
    
        public void setDao(UserDao userdao) {
            this.userdao = userdao;
        }
    }

    dao:

    package com.blb.dao;
    
    import com.blb.util.C3p0Util;
    
    import org.apache.commons.dbutils.QueryRunner;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Repository;
    
    @Repository
    public class UserDao {
    
        @Autowired
        private QueryRunner runner;
        public QueryRunner getRunner() {
            return runner;
        }
    
        public void setRunner(QueryRunner runner) {
            this.runner = runner;
        }
    }

    5.用配置文件Bean的方式加入ioc容器

    <?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="userDao" class="com.blb.dao.UserDao" autowire="byType">
    
        </bean>
    
        <bean id="userService" class="com.blb.service.UserService" autowire="byName">
    
        </bean>
    
        <bean id="userController" class="com.blb.controller.UserController" autowire="byType">
    
        </bean>
    </beans>

    6.测试运行

    @Test
        public  void buildIOC(){
            BeanFactory bf = new ClassPathXmlApplicationContext("Spring.xml");
    
            UserController controller=(UserController)bf.getBean("userController");
            QueryRunner runner = controller.getUserService().getDao().getRunner();
    
            try {
                List<User> query = runner.query("select * from t_user",new BeanListHandler<User>(User.class));
                for(User user:query){
                    System.out.println(user);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
        }
    }
  • 相关阅读:
    机器学习 —— 多元线性回归
    利用Python实现kNN算法
    Python下的OpenCV学习 02 —— 图像的读取与保存
    Python下的OpenCV学习 01 —— 在Linux下安装OpenCV
    Linux check whether hyperthreading is enabled or not
    Centos7 安装单节点Torque PBS
    CentOS 7中以runfile形式安装CUDA 9.0
    Linux /etc/profile文件详解
    Linux下Makefile学习笔记
    使用 Eigen 3.3.3 进行矩阵运算
  • 原文地址:https://www.cnblogs.com/asksk/p/12681782.html
Copyright © 2011-2022 走看看