在Spring/springMVC项目中总会有一些xml配置如:web.xml ;application.xml 、dispatcher-servlet.xml 但是进入servlet3.0 后 这些配置都可以使用注解来完成;
本次环境使用Spring4xx + servlet3.0 、Tomcat8
除去web.xml文件
实现代码
这里需要继承WebApplicationInitializer 接口 具体请看:http://datum.iteye.com/blog/1537632 除去 dispatcher-servlet.xml |
代码
package com.wisely.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.*.controller")
public class DispatcherServletConfig {
@Bean
public InternalResourceViewResolver internalResourceViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/classes/views");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
除去application.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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.xsd">
<context:component-scan base-package="com.xx">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<context:property-placeholder location="classpath:db-config.properties"/>
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
</beans>
其中数据库的相关配置从db-config.properties配置文件读取:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb
jdbc.username=root
jdbc.password=123456
代码
package com.wisely.config;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import javax.sql.DataSource;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.wisely",excludeFilters = {@ComponentScan.Filter(value = Controller.class)})
public class ApplicationConfig {
@Value("${jdbc.driverClassName}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean(destroyMethod = "close")
public DataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
/**
* 必须加上static
*/
@Bean
public static PropertyPlaceholderConfigurer loadProperties() {
PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
ClassPathResource resource = new ClassPathResource("config.properties");
configurer.setLocations(resource);
return configurer;
}
}
或者使用注解
@PropertySource("classpath:db-config.properties")
就不无需Bean
/**
* 必须加上static
*/
@Bean
public static PropertyPlaceholderConfigurer loadProperties() {
PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
ClassPathResource resource = new ClassPathResource("config.properties");
configurer.setLocations(resource);
return configurer;
}
修改ContainerWebInitializer
package com.wisely;
import com.wisely.config.ApplicationConfig;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
public class ContainerWebInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(ApplicationConfig.class);
servletContext.addListener(new ContextLoaderListener(rootContext));
AnnotationConfigWebApplicationContext webContext = new AnnotationConfigWebApplicationContext();
webContext.register(DispatcherServlet.class);
ServletRegistration.Dynamic registration = servletContext.addServlet("dispatcher",new DispatcherServlet(webContext));
registration.addMapping("/");
registration.setLoadOnStartup(1);
}
}
转载于:https://my.oschina.net/u/1414315/blog/979336
最后
以上就是敏感小丸子最近收集整理的关于servlet3.0+SpringMVC出去所有xml配置:实现零配置的全部内容,更多相关servlet3内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复