SpringMVC学习记录文章目录:
1、程序的耦合和解耦思路
2、使用springIOC解决程序耦合的前期准备
3、BeanFactory和ApplicationContext的区别及ApplicationContext接口的实现类
4、bean标签及其实例化的3种方式
5、bean的作用范围和生命周期
6、Spring的依赖注入
7、基于注解的IOC环境搭建
8、基于注解的IOC-常用注解(Spring2.5规范)
9、Spring常用注解-新(Spring2.5规范以上)
10、Spring整合Junit单元测试
11、AOP的相关概念
12、Spring中AOP的术语
13、SpringAOP常用标签解释说明
14、SpringAOP中切入点表达式说明
15、SpringAOP类型说明及环绕通知的特殊说明
16、基于xml的SpringAOP配置
17、SpringAOP常用注解
18、基于注解的SpringAOP配置
19、Spring中的JdbcTemplate
20、Spring中的事务控制
首先我们先引入一个问题,如何把xml配置文件“干掉”?
这个是时候就要用到新的注解,但是也要创建一个类,这个类的作用相当于xml配置文件,也就是spring配置类。
@Configuration
作用:用于指定当前类是一个spring配置类,当创建容器时会从该类上加载注解。获取容器时需要使用AnnotationApplicationContext(有@Configuration注解的类.class)。
属性:
- value:用于指定配置类的字节码
示例代码:
/**
* 用于初始化spring容器的配置类
*/
@Configuration
public class SpringConfiguration{
}
@ComponentScan
作用:用于指定spring在初始化容器时要扫描的包。作用和在spring的xml配置文件中的:
<context:component-scan base-package="com"/>
是一样的。
属性:
- basePackages:用于指定要扫描的包。和该注解中的value属性作用一样。
@Configuration
@ComponentScan("com")
public class SpringConfiguration{
}
@Bean
作用:该注解只能写在方法上,表明使用此方法创建一个对象,并且放入spring容器。它就相当于我们之前在xml配置中介绍的factory-bean和factory-method。
属性:
- name:用于指定bean的id
- 默认值:方法的名称
代码示例:
@Bean(name = "datasource2")
public DataSource createDS() throws Exception {
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
comboPooledDataSource.setUser("root");
comboPooledDataSource.setPassword("123456");
comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
comboPooledDataSource.setJdbcUrl("jdbc:mysql:///spring_ioc");
return comboPooledDataSource;
}
@import
作用:用于导入其他配置类,在引入其他配置类时,可以不用再写@Configuration注解。写上也没问题。
属性:
- value[]:用于指定其他配置类的字节码。
特点:
- 当只需要用类里面方法的返回值是可以用,如果要调用方法,不能用
代码示例:
@Configuration
@ComponentScan(basePackages = "config")
@Import({ Configuration_B.class})
public class Configuration_A {
}
@Configuration
@PropertySource("classpath:info.properties")
public class Configuration_B {
}
@PropertySource
作用:用于加载.properties文件中的配置。例如我们配置数据源时,可以把连接数据库的信息写到properties配置文件中,就可以使用此注解指定properties配置文件的位置。
属性值:
- value[]:用于指定properties文件位置。如果是在类路径下,需要写上classpath:
然后在方法中用@Bean注入Srping容器中配置文件的数据
代码示例:
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean(name="dataSource")
public DataSource getDataSource(){
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
return ds;
}
}
jdbc.properties文件:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/day01_spring
jdbc.username=root
jdbc.password=123456
注意:我们目前上课使用的版本是4.2.4,在spring4.3以前都需要提供一个占位符配置器:
PropertySourcesPlaceholderConfigurer
而在spring4.3以后,则不需要提供。
提供的方式如下:(在SpringConfiguration或JdbcConfig中配置均可)
代码示例:
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}