Spring 注解开发
1.1 Spring原始注解
Spring 是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率.
注意:
使用注解的时候需要开启组件扫描
<!--配置组件扫描-->
<context:component-scan base-package="me.aowu"/>
1.2 @Autowired和@Qualifier 注入解析
前:
@Service("userService")
public class UserServiceImpl implements UserService {
// <property name="userDao" ref="userDao"></property>-->
//@AutoWired按照数据类型从Spring容器中进行匹配
//由于当前UserDao只有一个Bean:userDao 故这里的@Qualifier也可省略
@Autowired
@Qualifier("userDao")//按照ID值从容器中进行匹配 但是此处@Qualifier 要结合@AutoWired一起使用
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save() {
userDao.save();
}
}
后:
@Service("userService")
public class UserServiceImpl implements UserService {
// <property name="userDao" ref="userDao"></property>-->
@Autowired
@Qualifier("userDao")
private UserDao userDao;
@Override
public void save() {
userDao.save();
}
}
1.3 @Value注入
//基本用法
@Value("Aowu")
private String driver;
//可以使用el表达式 获取jdbc中的键值对
@Value("${jdbc.driver}")
private String driver;
1.4 @PostConstruct和@PreDestroy
构造和销毁
@PostConstruct
public void init(){
System.out.println("UserServiceImpl: Initialized!!");
}
@PreDestroy
public void destroy(){
System.out.println("UserServiceImpl: Destroied!!");
}
2.1 Spring新注解
使用原始注解不能全部替代xml配置文件,还需要使用注解替代的配置如下:
- 非自定义的Bean配置
<Bean> - 加载Properties文件的配置
<context:property-placeholder> - 组件扫描的配置
<context:component-scan> - 引入其他文件
<import>
2.2 @Configuration
- 标志该类是Spring的核心配置类
2.3 @ComponentScan
//<!-- 配置组件扫描-->
//<context:component-scan base-package="me.aowu"/>
@ComponentScan("me.aowu")
2.4 @Bean
- 将该方法返回值存储到Spring容器中
//Spring会将当前方法返回值以指定名称存储到Spring容器当中
@Bean("dataSource")
public DataSource getDataSource() throws SQLException, PropertyVetoException {
ComboPooledDataSource dataSource =new ComboPooledDataSource();
......
return dataSource;
}
2.5 @PropertySource
//<!-- 加载外部properties文件-->
//<context:property-placeholder location="classpath:jdbc.properties"/>
@PropertySource("classpath:jdbc.properties")
2.6 @Import
//<import source=""/>
@Import(DataSourceConfiguration.class)
//多个
@Import({DataSourceConfiguration.class,xxx.class})
2.7 测试类修改API
//ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
ApplicationContext app = new AnnotationConfigApplicationContext(SpringConfiguration.class);