前言:
在之前学完了Spring的依赖注入后,虽然使用xml配置很方便,但是有些时候还是不太方便或者容易配置容易堆积,所以我们使用了注解开发。
Spring原始注解
Component
使用
//<bean name="userDao" class="com.itpig.dao.impl.UserDaoImp"></bean>
@Component("userDao")
public class UserDaoImp implements UserDao {
@Override
public void save() {
System.out.println("run.....");
}
Component就相当于在xml 中使用bean配置相应的类实例化
@Repository,@server,@Controller他们的作用与 @Component一样只不过是为了更好的读取代码所以使用不同的名字来代表不层,分别是dao层,server层 以及web层。
依赖注入-使用
// <property name="userDaoImp" ref="userDao"></property>
@Autowired //自动注入.安装数据类型从Spring容器中进行匹配
private UserDaoImp userDaoImp=new UserDaoImp();Autowired使用
public void setUserDaoImp(UserDaoImp userDaoImp) {
this.userDaoImp = userDaoImp;
}
Autowired想到与xml中的 property来进行依赖注入,不过他是从spring容器中寻找相应的实例化类在注入
@Qualifier("userDao")//安装ID名称从容器中进行匹配的,但是注意此处要结合@Autowired一起使用
@Resource(name = "userDao") //相当于@Autowired 加 @Qualifier
Value使用
@Value("${jdbc.driver}")
private String driver;
@Value("fsafsa")
private String driver;
使用1 是冲容器中找到配置入的文件中的字段来进行使用,而2 则是直接赋值
注意点
在使用注解开发的时候需要在xml文件中进行组件扫描的配置
<!-- 配置组件扫描-->
<context:component-scan base-package="com.itpig"/>
Spring新注解
为什么使用新注解:因为原始注解对于一些配置是无法进行使用的所有需要新注解来进行使用
Configuration
/**标志该类是Spring的核心配置类
*
*/
@Configuration
@Import(DataSourceConfiguredtion.class)
public class SpringConfiguration {
}
这个注解表示这个类是一个核心配置类,在使用的时候容器会从这个类上加载注解
ComponentScan
//<context:component-scan base-package="com.itpig"/>
@ComponentScan("com.itpig")
这个注解相当于一个组件扫描的配置
Bean
@Bean("dataSource")//代表Spring会将当前方法的返回值以指定名称储存到spring容器当中
public DataSource getDataSource() throws PropertyVetoException, SQLException {
ComboPooledDataSource dataSource=new ComboPooledDataSource();
dataSource.setDriverClass(driver);
dataSource.setJdbcUrl(url);
dataSource.setUser(user);
dataSource.setPassword(password);
return dataSource;
}
使用这个注解就可以去注入一些官方定义好的类了,他可以将类的返回值存储到Spring的容器里
PropertySource
//<context:property-placeholder location="file:D:\Spring\itpig_spring_ioc_anno\src\main\resources\jdbc.properties"/>
@PropertySource("file:D:\\Spring\\itpig_spring_ioc_anno\\src\\main\\resources\\jdbc.properties")
该注解相当于配置中的加载properties配置
Import
//<import resource="">
@Import(DataSourceConfiguredtion.class)
public class SpringConfiguration {
}
这个注解就是导入其他配置类用的,就是减少代码的积累在一个文件中