一、回顾
1.1 restful风格 GET(查找) POST(添加) 【PUT(更新) DELETE(删除) 一定要使用springmvc中的过滤器,来把post提交转化为PUT,DELETE, _method:表示真正的提交方式】
1.2 Springmvc如何进行异常处理。 1.局部 2.全局 @ControllerAdvice
1.3 Spring框架。它就是一个容器,管理类对象的生命周期。
1.4 IOC(DI) 控制反转
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>
七、使用注解
- 引入jar包(aop的jar包)
- 配置文件中使用包扫描。
- 在相应的类上加上注解.
@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"; } }