Spring学习笔记1——IOC: 尽量使用注解以及java代码
2016-07-13 16:52
791 查看
在实战中学习Spring,本系列的最终目的是完成一个实现用户注册登录功能的项目。
预想的基本流程如下:
1、用户网站注册,填写用户名、密码、email、手机号信息,后台存入数据库后返回ok。(学习IOC,mybatis,SpringMVC的基础知识,表单数据验证,文件上传等)
2、服务器异步发送邮件给注册用户。(学习消息队列)
3、用户登录。(学习缓存、Spring Security)
4、其他。
边学习边总结,不定时更新。项目环境为Intellij + Spring4。
一、准备工作。
1、mysql中建库建表。
UserMapper.xml
三、IOC
1、创建IOC容器,通过注解方式,RootConfig.java。
@Configuration: 表明这是一个配置类。
@ComponentScan: 启用组建扫描,basePackages:需要扫描的基础package。excludeFilters: 符合filter条件的不扫描。
@ImportResource: 引入xml文件。
@PropertySource: 引入properties文件。
2、由于创建的是webapp项目,并且采用了SpringMVC,那么DispatcherServlet是核心。以前的Spring版本中,一般会配置在web.xml中。而在Spring4中,可以在Java代码中来实现。WebAppInitializer.java。
3、创建WebConfig.java。
@Bean: 声明这个方法会创建所需类型的实例,并注册为Spring应用上下文中的bean。
1、参考文献:Spring实战(第4版)。
2、传送门:基于纯Java代码的Spring容器和Web容器零配置的思考和实现。
预想的基本流程如下:
1、用户网站注册,填写用户名、密码、email、手机号信息,后台存入数据库后返回ok。(学习IOC,mybatis,SpringMVC的基础知识,表单数据验证,文件上传等)
2、服务器异步发送邮件给注册用户。(学习消息队列)
3、用户登录。(学习缓存、Spring Security)
4、其他。
边学习边总结,不定时更新。项目环境为Intellij + Spring4。
一、准备工作。
1、mysql中建库建表。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.everSeeker.dao.UserDao"> <resultMap id="ResultMapUser" type="com.everSeeker.entity.User"> </resultMap> <insert id="addUser" parameterType="User"> INSERT INTO user(id, username, password, email, cellphone, regDate) VALUES(#{id}, #{username}, #{password}, #{email}, #{cellphone}, #{regDate}) </insert> <select id="getUserByUsername" parameterType="String" resultMap="ResultMapUser"> SELECT * FROM user WHERE username=#{username} </select> </mapper>
UserMapper.xml
三、IOC
1、创建IOC容器,通过注解方式,RootConfig.java。
@Configuration @ComponentScan(basePackages = {"com.everSeeker"}, excludeFilters = { @ComponentScan.Filter(type = FilterType.CUSTOM, value = RootConfig.WebPackage.class)}) @ImportResource({"classpath:spring-mybatis.xml"}) public class RootConfig { public static class WebPackage extends RegexPatternTypeFilter { public WebPackage() { super(Pattern.compile("com\\.everSeeker\\.web")); } } }
@Configuration: 表明这是一个配置类。
@ComponentScan: 启用组建扫描,basePackages:需要扫描的基础package。excludeFilters: 符合filter条件的不扫描。
@ImportResource: 引入xml文件。
@PropertySource: 引入properties文件。
2、由于创建的是webapp项目,并且采用了SpringMVC,那么DispatcherServlet是核心。以前的Spring版本中,一般会配置在web.xml中。而在Spring4中,可以在Java代码中来实现。WebAppInitializer.java。
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { //继承了AbstractAnnotationConfigDispatcherServletInitializer的类会自动配置DispatcherServlet和Spring应用上下文 @Override protected String[] getServletMappings() { //将DispatcherServlet映射到"/" return new String[] { "/" }; } /** * RootConfig类用来配置ContextLoaderListener创建的应用上下文中的bean, * 比如@Repository, @Service等组件 */ @Override protected Class<?>[] getRootConfigClasses() { return new Class<?>[] { RootConfig.class }; } /** * DispatcherServlet加载应用上下文时,使用定义在WebConfig配置类中的bean, * 用来加载包含Web组件的bean,比如控制器,视图解析器以及处理器映射, @Controller, @RequestMapping等 */ @Override protected Class<?>[] getServletConfigClasses() { return new Class<?>[] { WebConfig.class }; } @Override protected void customizeRegistration(ServletRegistration.Dynamic registration) { //限制上传文件的大小不超过2MB,整个请求不超过4M,所有上传的文件都要写到磁盘中 registration.setMultipartConfig(new MultipartConfigElement("/tmp/uploads", 2097152, 4194304, 0)); } }
3、创建WebConfig.java。
@Configuration @EnableWebMvc @ComponentScan("com.everSeeker.web") public class WebConfig extends WebMvcConfigurerAdapter { //配置jsp视图解析器 @Bean public ViewResolver viewResolver() { InternalResourceViewResolver resourceViewResolver = new InternalResourceViewResolver(); resourceViewResolver.setPrefix("/WEB-INF/views/"); resourceViewResolver.setSuffix(".jsp"); resourceViewResolver.setExposeContextBeansAsAttributes(true); return resourceViewResolver; } //配置multipart解析器, 上传文件用 @Bean public MultipartResolver multipartResolver() throws IOException { return new StandardServletMultipartResolver(); } //配置静态资源的处理 @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } }
@Bean: 声明这个方法会创建所需类型的实例,并注册为Spring应用上下文中的bean。
1、参考文献:Spring实战(第4版)。
2、传送门:基于纯Java代码的Spring容器和Web容器零配置的思考和实现。
相关文章推荐
- Struts2的简单使用(二)页面向action传值
- jboss-5.1.0.GA-jdk6.zip与jboss-5.1.0.GA.zip有什么区别?以及下载地址!!!
- Java克隆调用super.clone()原理
- struts2一个实例中遇到的问题
- java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder 异常
- There is no getter for property "name" in java.lang.String
- 热门框架RxJava + Retrofit的整合
- JAVA自学之每日一题(十)
- java实现愤怒的小鸟游戏之Java swing图形界面开发游戏项目愤怒的小鸟源码及实现方式详解
- Spring中的jar包简介
- Java对象克隆(Clone)及Cloneable接口
- java面向对象基础
- Java Swing JTable 表格【16:复选框JCheckBox作为表格元素】
- eclipse代码颜色设置
- 初识java程序的垃圾回收机制及对象在内存中的状态-----自学JAVA(第二节)
- struts2--概述
- spring编程式事务管理
- 学习RXJava文档整理
- springMVC 配置UEditor上传功能
- 【Java】异常 java.io.IOException: Stream closed 的解决办法