1 修改 web.xml
<!--使用java配置文件 需要显式的指定上下文配置类, 在使用xml配置方式的时候Spring默认使用ClassPathXmlApplicationContext来加载上下文文件。-->
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>
<!--spring 配置的beans-->
<context-param>
<param-name>contextConfigLocation</param-name>
<!--自己定义的配置上下文的java文件-->
<param-value>com.hjx.demo.appliction.ContextConfig</param-value>
</context-param>
<servlet>
<servlet-name>dispatcher-servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</init-param>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.hjx.demo.appliction.Application</param-value>
</init-param>
<!--
用来指定应用程序加载相应的spring上下文配置 配合@Profile(value = "dev")注解使用,
如果没有配置的话不需要添加
-->
<init-param>
<param-name>spring.profiles.default</param-name>
<param-value>dev</param-value>
</init-param>
<!--加载顺序-->
<load-on-startup>1</load-on-startup>
</servlet>
<!--指定spring servlet映射的路径-->
<servlet-mapping>
<servlet-name>dispatcher-servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2 定义java文件 使用注解
//@Profile(value = "dev")配置上下文环境 通过web.xml中来选择相应的环境
//在junit中通过@ActiveProfiles(value = {"dev"})注解来激活.使用junit的话必须要添加.
@Profile(value = "dev")
// 表示这个类是spring的一个配置类。
@Configuration
// 引入其他的配置文件
@Import(value = DataSourceApplication.class)
// 表示开启springMVC 的支持
@EnableWebMvc
// 扫描包注解,扫描com.hjx.demo包下的spring注解
@ComponentScan(basePackages = {"com.hjx.demo"})
// 继承了WebMvcConfigurationSupport 类。该类中spring已经创建了大部分需要用到的 bean。
public class Application extends WebMvcConfigurationSupport {
/**
* @Bean 注解表示这是一个 spring 中的bean,bean的名称默认为该方法的方法名称。bean的class为这个方法的返回值。
*给bean设置值的时候参照xml文件中的设置方法就行。但是部分bean除外,一些属性没有set方法。
*可以直接查看该类,了解源代码。
*
*下面的连个bean 是设置 ajax 中json视图解析的bean。具体参数设置直接查看了源码。
*/
@Bean
public AnnotationMethodHandlerAdapter annotationMethodHandlerAdapter() {
AnnotationMethodHandlerAdapter handlerAdapter = new AnnotationMethodHandlerAdapter();
handlerAdapter.setMessageConverters(new HttpMessageConverter[]{jackson2HttpMessageConverter()});
return handlerAdapter;
}
@Bean
public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter(){
MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
List<MediaType> supportedMediaTypes = new ArrayList<MediaType>();
//设置视图解析的类型和编码格式。
supportedMediaTypes.add(MediaType.parseMediaType("text/html;charset=UTF-8"));
supportedMediaTypes.add(MediaType.parseMediaType("text/json;charset=UTF-8"));
supportedMediaTypes.add(MediaType.parseMediaType("application/json;charset=UTF-8"));
messageConverter.setSupportedMediaTypes(supportedMediaTypes);
return messageConverter;
}
}
测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
classes = {Application.class, ContextConfig.class},
loader = AnnotationConfigWebContextLoader.class)// 使用java配置spring时,需要指定加载器
@ActiveProfiles(value = {"dev"}) // 用来激活相应环境的spring配置
@WebAppConfiguration //不知道干啥的,反正要加上.
public class JDBCTest {
@Autowired
JdbcTemplate jdbcTemplate;
@Test
public void test() {
System.out.println("=====================");
}
@Test
public void jdbcTest() {
System.out.println(jdbcTemplate.hashCode());
String sql = "select * from tbl_wechat_user";
jdbcTemplate.query(sql, resultSet -> {
System.out.print(resultSet.getString(1)+"===");
System.out.print(resultSet.getString(2)+"===");
System.out.print(resultSet.getString(3));
System.out.println();
});
}
}