1 前言
使用注解类代替xml配置,使用注解代理xml中的标签
2 标签
2.1 用于Bean(类)上的常见注解
2.1.1 @Component
步骤:
在xml中配置包扫描,使得spring知道在哪些类上加上@Component
在特定类上加上@Component
测试
/**
* @author : msf
* @date : 2023/1/24
*/
public class ApplocatoonContextTest {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) context.getBean("userDao");
System.out.println("userDao = " + userDao);
}
}
<!--配置包扫描-->
<context:component-scan base-package="cn.msf"/>
@Component("userDao")
public class UserDaoImpl implements UserDao {
}
测试
/**
* @author : msf
* @date : 2023/1/24
*/
// <bean id="userDao" class="cn.msf.dao.impl.UserDaoImpl"/>
// 通过value值设置 beanName
@Component("userDao")
@Scope(value = "singleton")
@Lazy(value = false)
public class UserDaoImpl implements UserDao {
public UserDaoImpl() {
System.out.println("userDao创建");
}
@PostConstruct
public void init(){
System.out.println("userDao初始化");
}
@PreDestroy
public void destroy(){
System.out.println("userDao销毁");
}
}
我们知道JavaEE开发是分层的,为了每层的Bean标识语义更加明确,因此Component有如下衍生注解
2.2 用于Bean内部的常见注解
2.2.1 @Value
既可以加载字段上,也可以加在方法上(set方法)。
一般是从外部读入的。
@Value("msf")
private String username;
@Value("lisi")
public void setUsername(String username){
this.username = username;
}
2.2.2 @Autowired
根据类型进行注入,如果有同一类型的bean有多个,再尝试根据名字进行二次匹配
2.2.3 @Qualifier
2.2.4@Resource
@Resource = @Autowired + @Qualifier