您的位置:首页 > 编程语言 > Java开发

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中建库建表。

<?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容器零配置的思考和实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: