SSM使用注解配置
现在市面上很流行注解配置项目,而SSM 目前使用注解配置的还很少,
今天弄了半天,终于成功配出来,下面分享一下
<完全抛弃 XML 的配置>
项目开源
下载地址1:csdn下载
下载地址2:CodeChina
目录
Step 2 创建 DataSourceConfig.java
Step 1 创建 jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///vuee?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=dcpnet
jdbc.initialSize=5
Step 2 创建 DataSourceConfig.java
该配置用于配置数据源,类似于 XML的配置
代码
在类上面注意导入 jdbc.properties
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfig {
/** mysql 驱动类名 */
@Value("${jdbc.driverClassName}")
private String jdbcDriverClassName;
/** mysql 连接 url */
@Value("${jdbc.url}")
private String jdbcUrl;
/** mysql 用户名 */
@Value("${jdbc.username}")
private String jdbcUserName;
/** mysql 密码 */
@Value("${jdbc.password}")
private String jdbcPassword;
/**
* 获取数据源
* @return 数据源 dataSource
*/
@Bean("dataSource")
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(jdbcDriverClassName);
dataSource.setUrl(jdbcUrl);
dataSource.setUsername(jdbcUserName);
dataSource.setPassword(jdbcPassword);
return dataSource;
}
/**
* 事务管理
* @param dataSource 数据源
* @return 数据源事务管理
*/
@Bean("dataSourceTransactionManager")
public DataSourceTransactionManager dataSourceTransactionManager(DataSource dataSource){
return new DataSourceTransactionManager(dataSource);
}
}
Step 3 MybatisConfig.java
这个类用于配置 SqlSessionFactory 、 Mybatis 的设置
一般要对 Mybatis 进行配置,和以往的 mybatis-config.xml 中配置的内容一样,
进行别名配置,驼峰转换机制等
然后通过 SqlSessionFactory 进行注入配置
Mybatis-config.xml
spring-ioc.xml 部分
代码
我们将上面的两个部分都写在 MybatisConfig.java
public class MybatisConfig {
/**
* 配置Mybatis
* @return
*/
@Bean
public Configuration configuration(){
// 配置Mybatis
Configuration configuration = new Configuration();
// 驼峰命名
configuration.setMapUnderscoreToCamelCase(true);
// 日志输出
configuration.setLogImpl(StdOutImpl.class);
// 使用列标签替换列别名 默认:true
configuration.setUseColumnLabel(true);
return configuration;
}
/**
* 获取 sqlSessionFactory
* @param dataSource 数据源
* @return sqlSessionFactory
* @throws Exception 异常
*/
@Bean("sqlSessionFactory")
public SqlSessionFactory SqlSessionFactory(@Autowired DataSource dataSource,@Autowired Configuration configuration) throws Exception {
/** 创建 SqlSessionFactoryBean */
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
// 设置数据源
factoryBean.setDataSource(dataSource);
// 扫描mapper配置
factoryBean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources("mapper/*.xml")
);
factoryBean.setConfiguration(configuration);
return factoryBean.getObject();
}
/**
* 使用mybatis的时候 用的动态代理 完全就只有接口
* @return mapperScannerConfigurer
*/
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
/** 创建扫面的配置类 */
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
// 指定要扫描的包 这样spring才知道有哪些dao要动态代理
mapperScannerConfigurer.setBasePackage("cn.dcpnet.dao");
return mapperScannerConfigurer;
}
}
Step4 SpringMvcConfig.java
这一个类主要是配置以往的 spring-mvc.xml 中的配置
ViewResolver 现在不使用,就不进行配置,并且JSP 是已经被淘汰了技术了
代码
使用 java 代码实现以上功能 SpringMvcConfig.java
注意,这个类要实现接口 WebMvcConfigure
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"cn.dcpnet.controller"})
public class SpringMvcConfig implements WebMvcConfigurer {
/**
* 文件上传配置
* @return
*/
@Bean("multipartResolver")
public CommonsMultipartResolver commonsMultipartResolver(){
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
// 配置上传大小
resolver.setMaxUploadSize(1024*1024*80L);
// 配置上传的编码
resolver.setDefaultEncoding("utf-8");
return resolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
}
/**
* 接触跨域访问限制
* @param registry registry
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("*")
.allowedMethods("*")
.allowCredentials(true)
.allowedHeaders("*")
.maxAge(3600);
}
}
Setp 5 AppConfig.java
整个 项目的核心配置
@Configuration
@EnableTransactionManagement
@Import({DataSourceConfig.class,MybatisConfig.class})
@ComponentScan(basePackages = {"cn.dcpnet.service","cn.dcpnet.dao"})
public class AppConfig {
}
Step 6 代替 Web.xml
以往我们都需要在 Web.xml 中去配置 编码过滤, DispatcherServlet 什么的,
当然,我写在这里就意味着能使用 java 代码去代替
前提是要实现接口 WebApplicationInitializer
继承了这个接口会重写 onStartup 方法,这个方法会在 tomcat 启动的时候自动启动,就像是去读取 web.xml 文件一般
WebApplication .java
代码
public class WebApplication implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
/** 加载父子容器 */
AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
// 加载配置文件
applicationContext.register(AppConfig.class);
applicationContext.register(SpringMvcConfig.class);
// 编码过滤
CharacterEncodingFilter characterEncoding = new CharacterEncodingFilter();
characterEncoding.setEncoding("UTF-8");
FilterRegistration.Dynamic encodingFilter = servletContext.addFilter("characterEncodingFilter",characterEncoding);
encodingFilter.addMappingForUrlPatterns(null,true,"/*");
ServletRegistration.Dynamic dispatcherServlet = servletContext.addServlet("dispatcherServlet",new DispatcherServlet(applicationContext));
dispatcherServlet.addMapping("/");
dispatcherServlet.setLoadOnStartup(1);
}
}
运行
然后随便写一个 Controller 就能访问了!
我这里就不进行展示了,如果有问题得话,可以联系我!~
谢谢!
致每个坚持奋斗的码农,