Spring框架的注解用途广泛,极大地简化了Java企业级应用的开发。注解通过提供元数据来替代传统的XML配置方式,让开发者能够通过简单的声明方式控制各种Spring框架的特性,从而实现依赖注入、面向切面编程等功能。
@Component @Controller , @Service , @Repository
@Component : 一个类被@Component修饰,表示这个类的实例将会被纳入IOC容器管理
<context:component-scan base-package="" /> 组件扫描
@Controller表示控制层组件;
@Service表示业务逻辑层组件;
@Repository表示数据访问层组件
默认情况下,beanName就是类名首字母小写
我们也可以指定beanNamexml
复制代码<bean id="ds" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.pwd}"/>
</bean>
1.新建 book.properties 文件
2.新建 Book 类java
复制代码@Component
@Data
//读取classpath路径下的book.properties
@PropertySource(value ="classpath:book.properties",encoding = "UTF-8")
public class Book {
@Value("${book.bname}")
private String bname ;
@Value("${book.price:0}")
private Integer price ;
@Value("${book.author}")
private String author ;
}
标注一个类为配置类
用来加载配置类,形成IOC容器java
复制代码beanFactory = new AnnotationConfigApplicationContext(MyConfiguration.class);
复制代码@Bean(name="ds2") // 将下面这个方法的返回值纳入IOC容器管理
public DataSource createDataSource(@Value("${jdbc.driver}") String driverClassName ,
@Value("${jdbc.url}") String url ,
@Value("${jdbc.username}") String username ,
@Value("${jdbc.pwd}") String pwd ){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driverClassName);
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(pwd);
return ds ;
}
复制代码@Bean(name="tiger001",initMethod = "eat",destroyMethod = "sleep")
@Import
是一个用于将其他配置类导入当前配置类的注解。
1.创建MyCondition类java
复制代码public class MyCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
boolean flag = context.getBeanFactory().containsBeanDefinition("getTiger");
return flag ;
}
}
2.定义一个方法java
复制代码@Bean("m")
@Conditional(MyCondition.class)
public Monkey createMonkeyInstance(){
return new Monkey();
}
复制代码<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>6.0.11</version>
<scope>test</scope>
</dependency>java
复制代码//@SpringJUnitConfig(MyConfiguration.class)
@SpringJUnitConfig(locations = "classpath:applicationContext.xml")
public class IOCTest3 {
@Autowired
@Qualifier("ds2")
private DataSource dataSource ;
@Test
public void test02() throws SQLException {
System.out.println(dataSource.getConnection());
}
}