【Spring】注入方法

添加maven依赖:

 1    <!-- spring基础包spring-core -->
 2     <dependency>
 3       <groupId>org.springframework</groupId>
 4       <artifactId>spring-core</artifactId>
 5       <version>5.2.8.RELEASE</version>
 6     </dependency>
 7     <!-- spring基础包spring-beans -->
 8     <dependency>
 9       <groupId>org.springframework</groupId>
10       <artifactId>spring-beans</artifactId>
11       <version>5.2.8.RELEASE</version>
12     </dependency>
13     <!-- spring基础包spring-context -->
14     <dependency>
15       <groupId>org.springframework</groupId>
16       <artifactId>spring-context</artifactId>
17       <version>5.2.8.RELEASE</version>
18     </dependency>
19     <!-- spring基础包spring-expression -->
20     <dependency>
21       <groupId>org.springframework</groupId>
22       <artifactId>spring-expression</artifactId>
23       <version>5.2.8.RELEASE</version>
24     </dependency>
25     <!-- spring依赖包 -->
26     <dependency>
27       <groupId>commons-logging</groupId>
28       <artifactId>commons-logging</artifactId>
29       <version>1.2</version>
30     </dependency>

一、setter注入和构造方法注入 

在resources文件夹下创建配置文件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.xsd">
 6     <!-- 将类配置到容器当中,让容器创建实例 -->
 7     <!-- setter注入 -->
 8     <bean id="hello" class="com.xiaobiti.HelloSpring">
 9         <!-- 给属性赋值 -->
10         <property name="name" value="南宁第一深情"/>
11     </bean>
12     <!-- 构造方法注入 -->
13     <bean id="User" class="com.xiaobiti.User">
14         <constructor-arg name="id" value="1"/>
15         <constructor-arg name="username" value="jojo"/>
16         <constructor-arg name="password" value="1234"/>
17     </bean>
18 </beans>

HelloSpring.java:

 1 package com.xiaobiti;
 2 
 3 public class HelloSpring {
 4     private String name;
 5 
 6     public void setName(String name) {
 7         this.name = name;
 8     }
 9 
10     public void show(){
11         System.out.println(name+",我在南宁很想你");
12     }
13 
14 }

测试类代码:

 1 package com.xiaobiti;
 2 
 3 import org.springframework.context.ApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 
 6 public class TestHelloSpring {
 7     public static void main(String[] args) {
 8         //加载核心配置文件
 9         ApplicationContext  applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
10         HelloSpring helloSpring = (HelloSpring) applicationContext.getBean("hello");
11         helloSpring.show();
12     }
13 }

运行结果:

上面已经展示的是setter方法注入,构造方法注入如下

User.java:

 1 package com.xiaobiti;
 2 
 3 public class User {
 4     private int id;
 5     private String username;
 6     private String password;
 7 
 8     public User(int id, String username, String password) {
 9         this.id = id;
10         this.username = username;
11         this.password = password;
12     }
13 
14     @Override
15     public String toString() {
16         return "User{" +
17                 "id=" + id +
18                 ", username='" + username + '\'' +
19                 ", password='" + password + '\'' +
20                 '}';
21     }
22 }

测试类代码:

1   public static void main(String[] args) {
2         //加载核心配置文件
3         ApplicationContext  applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
4         User u = (User) applicationContext.getBean("User");
5         System.out.println(u.toString());
6     }

运行结果:

二、依赖注入

创建一下文件结构:

包名.dao.UserDao.Java:

1 package com.xiaobiti.dao;
2 
3 public interface UserDao {
4     public boolean login(String username,String password);
5 }

包名.dao.impl.UserDaoImpl.java:

 1 package com.xiaobiti.dao.impl;
 2 
 3 import com.xiaobiti.dao.UserDao;
 4 
 5 public class UserDaoImpl implements UserDao {
 6     @Override
 7     public boolean login(String username, String password) {
 8         if (username.equals("admin") && password.equals("1234")){
 9             return true;
10         }
11         return false;
12     }
13 }

包名.service.UserService.java:

1 package com.xiaobiti.service;
2 
3 public interface UserService {
4     public boolean login(String username,String password);
5 }

包名.service.impl.UserServiceImpl.java:

 1 package com.xiaobiti.service.impl;
 2 
 3 import com.xiaobiti.dao.UserDao;
 4 import com.xiaobiti.service.UserService;
 5 
 6 public class UserServiceImpl implements UserService {
 7     private UserDao userDao;
 8     //setter方式注入
 9     public void setUserDao(UserDao userDao) {
10         this.userDao = userDao;
11     }
12 
13     @Override
14     public boolean login(String username, String password) {
15         return userDao.login(username,password);
16     }
17 }

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.xsd">
 6     <!-- 将类配置到容器当中,让容器创建实例 -->
 7     <!-- 注入dao -->
 8     <bean id="userDao" class="com.xiaobiti.dao.impl.UserDaoImpl"/>
 9     <!-- 注入service -->
10     <bean id="userService" class="com.xiaobiti.service.impl.UserServiceImpl">
11         <property name="userDao" ref="userDao"/><!-- ref填入已经注入的userDao,对应上面bean中id=“userDao” ,setter注入方法-->
12     </bean>
13 </beans>

测试类代码:

 1 public static void main(String[] args) {
 2         //加载核心配置文件
 3         ApplicationContext  applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
 4         UserService userService = (UserService) applicationContext.getBean("userService");
 5         boolean flag = userService.login("admin","1234");
 6         if (flag){
 7             System.out.println("登录成功");
 8         }else{
 9             System.out.println("登录失败");
10         }
11     }
posted @ 2023-03-28 14:36  小鼻涕孩  阅读(54)  评论(0)    收藏  举报