Spring学习日志二

一、回顾  

  1.1 restful风格  GET(查找) POST(添加)  PUT(更新) DELETE(删除) 一定要使用springmvc中的过滤器,来把post提交转化为PUT,DELETE, _method:表示真正的提交方式】

  1.2 Springmvc如何进行异常处理。 1.局部  2.全局 @ControllerAdvice

  1.3 Spring框架。它就是一个容器,管理类对象的生命周期。

  1.4 IOCDI) 控制反转

    Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中

二、Spring依赖注入的方式

  1.通过set方法

    <bean id="user1" class="com.zhiyou100.klb.bean.User">
        <!-- property:就是通过set方法来注入类的属性的值 -->
        <property name="name" value="${user.names}"></property>
        <property name="age" value="${user.age}"></property>
    </bean>

  2.通过构造方法

    <bean id="user2" class="com.zhiyou100.klb.bean.User">
        <!-- 
            constructor:构造方法的参数
            index:第几个参数,所应从零开始
            name:通过构造方法的参数名
        -->
        <constructor-arg index="0" value="${user.names}"></constructor-arg>
        <constructor-arg index="1" value="${user.age}"></constructor-arg>
    </bean>

三、依赖注入的数据类型

  1.基本数据类型和字符串 使用value

  2.如果是指向另一个对象的引用 使用ref

  3.如果类对象注入的属性类型为list类型

  <property name="list">
            <list>
                <bean class="com.zhiyou100.klb.bean.Student">
                    <property name="msg" value="${list.one}" ></property>
                </bean>
                <bean class="com.zhiyou100.klb.bean.Student">
                    <property name="msg" value="${list.two}" ></property>
                </bean>
                <bean class="com.zhiyou100.klb.bean.Student">
                    <property name="msg" value="${list.three}" ></property>
                </bean>
                <bean class="com.zhiyou100.klb.bean.Student">
                    <property name="msg" value="${list.four}" ></property>
                </bean>
            </list>
        </property>

  4.如果类对象注入的属性类型为map类型。

    <property name="map">
            <map>
                <entry key="key1" value="yi"></entry>
                <entry key="key2" value="er"></entry>
                <entry key="key3" value="san"></entry>
            </map>
        </property>

 四、bean的作用域

  Bean的作用域默认为单例模式

 五、自动注入

  <bean id="userDao" class="com.zhiyou100.klb.bean.UserDao"></bean>
    <!-- 
        autowire:自动注入的属性
        byType:根据useDao属性的类型,找与之匹配的bean
        byName:根据属性名,找与之匹配的bean的id
        no:需要手动注入
        default:采取全局的default-autowire设置
     -->
    <bean id="userServlet" class="com.zhiyou100.klb.bean.UserServlet" autowire="byType"></bean>

六、在Spring配置文件中引入属性文件

  <context:property-placeholder file-encoding="utf-8" location="classpath:*.properties"/>
    
    <bean id="user2" class="com.zhiyou100.klb.bean.User">
        <!-- 
            constructor:构造方法的参数
            index:第几个参数,所应从零开始
            name:通过构造方法的参数名
        -->
        <constructor-arg index="0" value="${user.names}"></constructor-arg>
        <constructor-arg index="1" value="${user.age}"></constructor-arg>
    </bean>

七、使用注解

  1. 引入jar包(aop的jar包)
  2. 配置文件中使用包扫描。
  3. 在相应的类上加上注解.

  @Repository   持久化注解。

  @Service 业务层注解

  @Controller 控制层注解

  @Autowired 自动注入 按照类型帮你自动注入,如果由多个类型相同的那么就会在按照名称注入。(建议使用这个)

  @Resouce  自动注入 按照名称注入,如果没有相同名称的bean那么会按照类型帮你注入。 它可以指定名称来注入。

 

<?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"
    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.2.xsd">

    <!-- 包扫描:扫描 -->
    <context:component-scan base-package="com.zhiyou100.klb"></context:component-scan>

</beans>
package com.zhiyou100.klb.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.zhiyou100.klb.dao.UserDao;

@Service
public class UserServiceImp implements UserService {

    @Autowired
    private UserDao userDao;

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    
    /* (non-Javadoc)
     * @see com.zhiyou100.klb.service.UserService#queryById(int)
     */
    @Override
    public void queryById(int id) {
        userDao.selectById(id);
    }
}
package com.zhiyou100.klb.dao;

import org.springframework.stereotype.Repository;

@Repository
public class UserDaoImp implements UserDao {

    /* (non-Javadoc)
     * @see com.zhiyou100.klb.dao.UserDao#selectById(int)
     */
    @Override
    public void selectById(int id) {
        System.out.println("根据ID查询数据库数据");
    }
}
package com.zhiyou100.klb.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import com.zhiyou100.klb.service.UserService;

@Controller
public class UserController {
    
    @Autowired
    private UserService userService;

    public void setUserService(UserService userService) {
        this.userService = userService;
    }
     
    public String findById(int id) {
        userService.queryById(id);
        return "update";
    }
}

 

转载于:https://www.cnblogs.com/kklb/p/11478568.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值