装配bean的三种方式

叁歲伎倆 2023-10-07 10:03 118阅读 0赞

第一种:XML装配

xml装配有两种方式:
第一种:利用有参构造方法注入

User类:

  1. package com.liu.xml;
  2. import java.util.List;
  3. //xml装配bean的两种方式
  4. public class User {
  5. private String username;
  6. private Integer password;
  7. private List<String> list;
  8. //第一种:利用有差构造方法装配bean
  9. public User(String username, Integer password, List<String> list) {
  10. super();
  11. this.username = username;
  12. this.password = password;
  13. this.list = list;
  14. }
  15. @Override
  16. public String toString() {
  17. return "User [username=" + username + ", password=" + password + ", list=" + list + "]";
  18. }
  19. }

ApplicationContext.xml配置文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
  6. <!-- 有参构造方法注入装配user -->
  7. <bean id = "user2" class = "com.liu.xml.User">
  8. <constructor-arg index = "0" value = "lisi"></constructor-arg>
  9. <constructor-arg index = "1" value = "123456"></constructor-arg>
  10. <constructor-arg>
  11. <!-- 注入list -->
  12. <list>
  13. <value>listvalue1</value>
  14. <value>listvalue1</value>
  15. <value>listvalue1</value>
  16. </list>
  17. </constructor-arg>
  18. </bean>
  19. </beans>

测试类:

  1. package com.liu.xml;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. public class XmlBeanTest {
  5. public static void main(String[] args) {
  6. //获取配置文件路径
  7. String xmlpath ="com/liu/xml/ApplicationContext.xml";
  8. //加载配置文件
  9. ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlpath);
  10. //输出有参构造方法注入的结果
  11. User user2 = (User) applicationContext.getBean("user2");
  12. System.out.println(user2);
  13. }
  14. }
第二种:利用无参构造方法和setter方法注入

User类:

  1. package com.liu.xml;
  2. import java.util.List;
  3. //xml装配bean的两种方式
  4. public class User {
  5. private String username;
  6. private Integer password;
  7. private List<String> list;
  8. //第二种:无参构造方法和setter方法注入
  9. public User() {
  10. super();
  11. }
  12. public void setUsername(String username) {
  13. this.username = username;
  14. }
  15. public void setPassword(Integer password) {
  16. this.password = password;
  17. }
  18. public void setList(List<String> list) {
  19. this.list = list;
  20. }
  21. @Override
  22. public String toString() {
  23. return "User [username=" + username + ", password=" + password + ", list=" + list + "]";
  24. }
  25. }

ApplicationContext.xml配置文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
  6. <!-- 无参构造方法和setter装配user -->
  7. <bean id = "user1" class = "com.liu.xml.User">
  8. <property name="username" value = "zhangsan"></property>
  9. <property name="password" value = "123456"></property>
  10. <property name="list" >
  11. <!-- 注入list -->
  12. <list>
  13. <value>listvalue1</value>
  14. <value>listvalue2</value>
  15. <value>listvalue3</value>
  16. </list>
  17. </property>
  18. </bean>
  19. </beans>

测试类:

  1. package com.liu.xml;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. public class XmlBeanTest {
  5. public static void main(String[] args) {
  6. //获取配置文件路径
  7. String xmlpath ="com/liu/xml/ApplicationContext.xml";
  8. //加载配置文件
  9. ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlpath);
  10. //输出无参构造方法注入的结果
  11. User user1 = (User) applicationContext.getBean("user1");
  12. System.out.println(user1);
  13. }
  14. }

两种方式的输出结果:

  1. User [username=zhangsan, password=123456, list=[listvalue1, listvalue2, listvalue3]]
  2. User [username=lisi, password=123456, list=[listvalue1, listvalue1, listvalue1]]

第二种:注解装配

UserDao.java

  1. package annotation;
  2. public interface UserDao {
  3. public void save();
  4. }

UserDaoImpl.java

  1. package annotation;
  2. import org.springframework.stereotype.Repository;
  3. @Repository("userDao")
  4. public class UserDaoImpl implements UserDao {
  5. @Override
  6. public void save() {
  7. // TODO Auto-generated method stub
  8. System.out.println("UserDao------save");
  9. }
  10. }

UserService.java

  1. package annotation;
  2. public interface UserService {
  3. public void save();
  4. }

UserServiceImpl.java

  1. package annotation;
  2. import javax.annotation.Resource;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. @Service("userService")
  6. public class UserServiceImpl implements UserService {
  7. //@Resource(name = "userDao") 两种注解都可以 Resource是根据名称注解 Autowired是自动注解
  8. @Autowired
  9. private UserDao userDao;
  10. @Override
  11. public void save() {
  12. // TODO Auto-generated method stub
  13. this.userDao.save();
  14. System.out.println("UserSerevice-------save");
  15. }
  16. }

UserController.java:

  1. package annotation;
  2. import javax.annotation.Resource;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Controller;
  5. @Controller("controller")
  6. public class UserController {
  7. //@Resource(name = "userService")两种注解都可以 Resource是根据名称注解 Autowired是自动注解
  8. @Autowired
  9. private UserService userService;
  10. public void save() {
  11. this.userService.save();
  12. System.out.println("UserController------save");
  13. }
  14. }

ApplicationContext.xml配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context-4.3.xsd">
  9. <!--第一种方式 -->
  10. <!-- 使用context命名空间,在配置文件中开启对应的注解解析器 -->
  11. <!-- 使用context命名空间的步骤1:添加xmlns:context="http://www.springframework.org/schema/context"
  12. 2:添加 http://www.springframework.org/schema/context
  13. http://www.springframework.org/schema/context/spring-context-4.3.xsd
  14. -->
  15. <context:annotation-config></context:annotation-config>
  16. <!-- 定义三个bean实例 -->
  17. <bean id = "userDao" class = "annotation.UserDaoImpl"></bean>
  18. <bean id = "userService" class = "annotation.UserServiceImpl"></bean>
  19. <bean id = "userController" class = "annotation.UserController"> </bean>
  20. <!-- 第二种方式 使用context命名空间。通知string扫描包自动对注解解析-->
  21. <!-- <context:component-scan base-package="annotation"></context:component-scan> -->
  22. </beans>

ControllerTest.java测试类:

  1. package annotation;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. public class ControllerTest {
  5. //使用注解进行装配
  6. public static void main(String[] args) {
  7. String xmlpath = "annotation/ApplicationContext.xml";
  8. ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlpath);
  9. //获取UserController的实例
  10. UserController userController = (UserController) applicationContext.getBean("userController");
  11. //输出UserController中的save方法
  12. userController.save();
  13. }
  14. }

输出结果:

  1. UserDao------save
  2. UserSerevice-------save
  3. UserController------save

第三种:自动装配

在这里插入图片描述
UserDao.java:

  1. package zidongzhuangpei;
  2. public interface UserDao {
  3. public void save();
  4. }

UserDaoImpl.java:

  1. package zidongzhuangpei;
  2. import org.springframework.stereotype.Repository;
  3. @Repository("userDao")
  4. public class UserDaoImpl implements UserDao {
  5. @Override
  6. public void save() {
  7. // TODO Auto-generated method stub
  8. System.out.println("UserDao------save");
  9. }
  10. }

UserService.java:

  1. package zidongzhuangpei;
  2. public interface UserService {
  3. public void save();
  4. }

UserServiceImpl.java:

  1. package zidongzhuangpei;
  2. import javax.annotation.Resource;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. @Service("userService")
  6. public class UserServiceImpl implements UserService {
  7. //@Resource(name = "userDao")
  8. @Autowired
  9. private UserDao userDao;
  10. public void setUserDao(UserDao userDao) {
  11. this.userDao = userDao;
  12. }
  13. @Override
  14. public void save() {
  15. // TODO Auto-generated method stub
  16. this.userDao.save();
  17. System.out.println("UserSerevice-------save");
  18. }
  19. }

UserController.java:

  1. package zidongzhuangpei;
  2. import javax.annotation.Resource;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Controller;
  5. @Controller("controller")
  6. public class UserController {
  7. //@Resource(name = "userService")
  8. @Autowired
  9. private UserService userService;
  10. public void setUserService(UserService userService) {
  11. this.userService = userService;
  12. }
  13. public void save() {
  14. this.userService.save();
  15. System.out.println("UserController------save");
  16. }
  17. }

ApplicationContext.xml配置文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context-4.3.xsd">
  9. <!-- 使用context命名空间,在配置文件中开启对应的注解解析器 -->
  10. <!-- 使用context命名空间的步骤1:添加xmlns:context="http://www.springframework.org/schema/context"
  11. 2:添加 http://www.springframework.org/schema/context
  12. http://www.springframework.org/schema/context/spring-context-4.3.xsd
  13. -->
  14. <context:annotation-config></context:annotation-config>
  15. <!-- 定义三个bean实例 -->
  16. <bean id = "userDao" class = "zidongzhuangpei.UserDaoImpl"></bean>
  17. <bean id = "userService" class = "zidongzhuangpei.UserServiceImpl" autowire="byName"></bean>
  18. <bean id = "userController" class = "zidongzhuangpei.UserController" autowire="byName"> </bean>
  19. </beans>

ControllerTest.java测试类:

  1. package zidongzhuangpei;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. public class ControllerTest {
  5. //使用注解进行装配
  6. public static void main(String[] args) {
  7. String xmlpath = "zidongzhuangpei/ApplicationContext.xml";
  8. ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlpath);
  9. //获取UserController的实例
  10. UserController userController = (UserController) applicationContext.getBean("userController");
  11. //输出UserController中的save方法
  12. userController.save();
  13. }
  14. }

运行结果:

  1. UserDao------save
  2. UserSerevice-------save
  3. UserController------save

发表评论

表情:
评论列表 (有 0 条评论,118人围观)

还没有评论,来说两句吧...

相关阅读