1.导包
2.在src下创建bean.xml,引入约束,开启注解扫描
bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 开启注解扫描,扫面指定包里面的注解(类、方法、属性等上面的注解) -->
<context:component-scan base-package="zh.spring.entity"></context:component-scan>
</beans>
3.在类和属性上添加注解
UserService.java
package zh.spring.entity;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component(value="userService")
@Scope(value="prototype")
public class UserService {
@Resource(name="userDao")
private UserDao userDao;// 使用注解注入属性,不需要set方法
public void dao(){
userDao.dao();
}
/**
* 创建对象的注解:
* @Component:通用
* @Controller:Web层创建bean
* @Service:Service层创建bean
* @Repository:Dao层创建bean
*/
/**
* 属性注入的注解
* @Value:注入普通属性
* @Autowired:根据类型注入属性
* @Qualifier:根据名称注入属性
* @Resource:根据类型和名称注入属性
*/
}
UserDao.java
package zh.spring.entity;
import org.springframework.stereotype.Component;
@Component(value="userDao")
public class UserDao {
public void dao(){
System.out.println("dao...");
}
}
4.测试
AnnotationTest.java
package zh.spring.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import zh.spring.entity.UserService;
public class AnnotationTest {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
UserService userService1 = (UserService) applicationContext.getBean("userService");
System.out.println(userService1);// zh.spring.entity.UserService@34c14649
userService1.dao();// dao...
UserService userService2 = (UserService) applicationContext.getBean("userService");
System.out.println(userService2);// zh.spring.entity.UserService@7ced7dad
userService2.dao();// dao...
}
}
5.配置文件和注解混合使用
实际开发中,创建bean交给配置文件,注入属性由注解完成。
UserService.java
package zh.spring.entity;
import javax.annotation.Resource;
public class UserService {
@Resource(name = "userDao")
private UserDao userDao;// 使用注解注入属性,不需要set方法
public void dao() {
userDao.dao();
}
/**
* 创建对象的注解:
*
* @Component:通用
* @Controller:Web层创建bean
* @Service:Service层创建bean
* @Repository:Dao层创建bean
*/
/**
* 属性注入的注解
* @Value:注入普通属性
* @Autowired:根据类型注入属性
* @Qualifier:根据名称注入属性
* @Resource:根据类型和名称注入属性
*/
}
UserDao.java
package zh.spring.entity;
public class UserDao {
public void dao() {
System.out.println("dao...");
}
}
bean.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 开启注解扫描,扫面指定包里面的注解(类、方法、属性等上面的注解) -->
<context:component-scan base-package="zh.spring.entity"></context:component-scan>
<bean id="userService" class="zh.spring.entity.UserService" scope="prototype"></bean>
<bean id="userDao" class="zh.spring.entity.UserDao"></bean>
</beans>
XmlAndAnnotationTest.java
package zh.spring.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import zh.spring.entity.UserService;
public class XmlAndAnnotationTest {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
UserService userService1 = (UserService) applicationContext.getBean("userService");
System.out.println(userService1);// zh.spring.entity.UserService@4a569e9b
userService1.dao();// dao...
UserService userService2 = (UserService) applicationContext.getBean("userService");
System.out.println(userService2);// zh.spring.entity.UserService@7cc6f83d
userService2.dao();// dao...
}
}