Spring学习日志二

Posted kklb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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";
    

 

以上是关于Spring学习日志二的主要内容,如果未能解决你的问题,请参考以下文章

spring核心之AOP学习总结二

峰Spring4学习spring AOP的应用例子

OA学习笔记-004-Spring2.5配置

spring Boot 学习(四Spring Boot与任务)

Spring学习总结(13)——Spring+Log4j+ActiveMQ实现远程记录日志

SpringBoot AOP学习:Spring AOP实现日志功能