简介
Spring作为容器,除了在xml配置对象。也可以通过注解配置对象。
注解
Spring的原始注解主要代替<Bean>的配置
@Component:使用在类上用于实例化Bean(Spring注入)
@Controller:使用在web层类上用于实例化Bean
@Service:使用在service层类上用于思力华bean
@Repository:使用在dao层类上用于实例化Bean
@Autowired:结合@Autowired使用,用于根据名称进行依赖注入(依赖注入)
@Qualifier:结合@Autowired使用,用于根据名称进行依赖注入 (引用)
@Resource:相当于@Autowired+@Qualifier,按照名称进行注入
@Value:注入普通属性
@Scope:标注Bean的作用范围
@PostConstruct:使用在方法上标注该方法时Bean的初始化方法
@PreDestroy:使用在方法上标注该方法时Bean的销毁方法
使用
@Component("userService") @Scope("singleton") public class UserService { @Autowired // 依赖注入 @Qualifier("userDao") //引用 private UserDao userDao; public void setUserDao(UserDao userDao){ this.userDao = userDao; } public void save(){ userDao.save(); } }
Spring的新注解
@Configuration:用于指定当前类时一个Spring配置类,当创建容器时会从该类上加载注解
@ComponentScan:用于指定Spring在初始化容器时要扫描的包。
作用和在Spring的xml配置文件中的<context:component-scan base-package='com.itheima'/>一样,用于找扫描的包
@Bean:使用在方法上,标注该方法的返回值存储道Spring容器中。
主要用在datasource上的方法初始化。
@PropertySource:用于加载.properties文件中的配置。
读入配置文件,用SPEL取值。
@Import:用于导入其它配置类。
导入其他配置类。
使用
@ComponentScan("xyz.javaswing") @PropertySource("classpath:jdbc.properties") @Import({DataSourceConfigration.class}) @Configuration public class SpringCofiguration { @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("dataSource") // Spring会将当前方法的返回值以指定名称存储到spring容器当中 public ComboPooledDataSource getDataSource() throws SQLException, PropertyVetoException { ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource(); comboPooledDataSource.setDriverClass(driver); comboPooledDataSource.setJdbcUrl(url); comboPooledDataSource.setUser(username); comboPooledDataSource.setPassword(password); return comboPooledDataSource; } }
SPEL:和EL,expressLanguage类似的语言。在注解中用${key}访问properties文件里键值对。
需要通过@PropertySource("classpath:jdbc.properties"),导入数据。
注意
使用注解开发,需要创建专门存放配置类的包config