目录
目录结构
@Autowired:根据属性类型自动装配
@Qualifier:根据属性名称进行注入(需要和@Autowired一起使用)
@Resource:可以根据类型也可以根据属性
@Value:注入普通类型属性
一、根据属性类型自动装配(@Autowired)
1.创建类
dao层
UserDao.java
public interface UserDao {
public void add();
}
UserDaoImpl.java
@Repository
public class UserDaoImpl implements UserDao{
@Override
public void add() {
System.out.println("dao add......");
}
}
Service层
UserService.java
@Service
public class UserService {
//定义dao类型的属性,不需要添加set方法
@Autowired //根据类型注入
private UserDao userDao;
public void add(){
System.out.println("add方法......");
userDao.add();
}
}
2.编写配置文件
bean22.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="com.health.IOC.L_注解开发.b_注入属性"></context:component-scan>
</beans>
3.测试
public class TestLb {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("com/health/IOC/L_注解开发/b_注入属性/bean22.xml");
UserService userService = context.getBean("userService", UserService.class);
System.out.println(userService);
userService.add();
}
}
输出结果:
二、根据属性名称进行注入(@Qualifier)
需要和@Autowired一起使用
1.创建类
dao层
UserDao.java
public interface UserDao {
public void add();
}
UserDaoImpl.java(加了个名UserDaoImpl1)
@Repository(value = "UserDaoImpl1")
public class UserDaoImpl implements UserDao{
@Override
public void add() {
System.out.println("dao add......");
}
}
Service层
UserService.java
@Service
public class UserService {
//定义dao类型的属性,不需要添加set方法
@Autowired //根据类型注入
@Qualifier(value = "UserDaoImpl1") //根据名称进行注入需要和@Autowired一起使用
private UserDao userDao;
public void add(){
System.out.println("add方法......");
userDao.add();
}
}
2.编写配置文件
bean22.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="com.health.IOC.L_注解开发.b_注入属性"></context:component-scan>
</beans>
3.测试
public class TestLb {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("com/health/IOC/L_注解开发/b_注入属性/bean22.xml");
UserService userService = context.getBean("userService", UserService.class);
System.out.println(userService);
userService.add();
}
}
输出结果:
三、可以根据类型也可以根据属性(@Resource)
1.创建类
dao层
UserDao.java
public interface UserDao {
public void add();
}
UserDaoImpl.java
@Repository
public class UserDaoImpl implements UserDao{
@Override
public void add() {
System.out.println("dao add......");
}
}
Service层
使用@Resource 也可使用@Resource(name = "UserDaoImpl1")也可
UserService.java
@Service
public class UserService {
@Value(value = "health")
private String name;
//@Resource //根据类型注入
@Resource(name = "UserDaoImpl1")
private UserDao userDao;
public void add(){
System.out.println("add方法......"+name);
userDao.add();
}
}
2.编写配置文件
bean22.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="com.health.IOC.L_注解开发.b_注入属性"></context:component-scan>
</beans>
3.测试
public class TestLb {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("com/health/IOC/L_注解开发/b_注入属性/bean22.xml");
UserService userService = context.getBean("userService", UserService.class);
System.out.println(userService);
userService.add();
}
}
输出结果:
四、@Value
注入普通类型属性
@Value(value = "值")
private String name;
具体使用方法参考上面 三、@Resource 的使用