Spring 中使用 set方法/构造方法/注解方式/自动装配 依赖注入

  • Post author:
  • Post category:其他

一、set方法注入

1.导入Spring 框架中所需要的 jar包 (4个spring 框架包,1个依赖包)

        具体查看:https://blog.csdn.net/Altitude_/article/details/100183138

2. 配置 Spring 的约束信息

        具体查看:https://blog.csdn.net/Altitude_/article/details/100183138

3. 书写代码

                                                         

package com.wx.dao;

public interface UserDao {
	public void say();
}
package com.wx.dao.impl;

import com.wx.dao.UserDao;

public class UserDaoImpl implements UserDao {

	@Override
	public void say() {
		// TODO Auto-generated method stub
		System.out.println("userDao method");
	}

}
package com.wx.service;

public interface UserService {
	public void say();
}	
package com.wx.service.impl;

import java.util.List;

import com.wx.dao.UserDao;
import com.wx.service.UserService;

public class UserServiceImpl implements UserService{
	
	private UserDao userDao;
	private String username;
	private Integer age;
	private List<String> lists;
	
	public void setUsername(String username) {
		this.username = username;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public void setLists(List<String> lists) {
		this.lists = lists;
	}

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	@Override
	public void say() {
		// TODO Auto-generated method stub
		System.out.println("UserService Method");
		userDao.say();
	}

	@Override
	public String toString() {
		return "UserServiceImpl [userDao=" + userDao + ", username=" + username
				+ ", age=" + age + ", lists=" + lists + "]";
	}

	


}

4. 在spring配置文件中创建Bean

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
        <bean id = "userDao" class="com.wx.dao.impl.UserDaoImpl"></bean>
        <bean id="userService" class="com.wx.service.impl.UserServiceImpl">
        	<property name="userDao" ref="userDao"></property>
        	<property name="username" value="wx"></property>
        	<property name="age" value="20"></property>
        	<property name="lists">
        		<list>
        			<value>跑步</value>
        			<value>足球</value>
        			<value>游泳</value>
        		</list>
        	</property>
        </bean>
</beans>

5. 测试:

package com.wx.mytest;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.wx.service.UserService;

public class MyTest1 {
	public static void main(String[] args){
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		UserService userService = (UserService)applicationContext.getBean("userService");
		userService.say();
		System.out.println(userService);
	}
}

6 .结果:

       

二、构造方法注入

1.导入Spring 框架中所需要的 jar包 (4个spring 框架包,1个依赖包)

        具体查看:https://blog.csdn.net/Altitude_/article/details/100183138

2. 配置 Spring 的约束信息

       具体查看:https://blog.csdn.net/Altitude_/article/details/100183138

3  书写代码

                                    

package com.wx.dao;

public interface UserDao {
	public void say();
}
package com.wx.dao.impl;

import com.wx.dao.UserDao;

public class UserDaoImpl implements UserDao {

	@Override
	public void say() {
		// TODO Auto-generated method stub
		System.out.println("userDao method");
	}

}
package com.wx.service;

public interface UserService {
	public void say();
}	
package com.wx.service.impl;

import java.util.List;

import com.wx.dao.UserDao;
import com.wx.service.UserService;

public class UserServiceImpl2 implements UserService{
	
	private UserDao userDao;
	private String username;
	private Integer age;
	private List<String> lists;
	
	public UserServiceImpl2(){}
	
	public UserServiceImpl2(UserDao userDao,String username,Integer age,List<String> lists){
		this.userDao=userDao;
		this.username = username;
		this.age = age;
		this.lists = lists;
	}

	@Override
	public void say() {
		// TODO Auto-generated method stub
		System.out.println("UserService Method");
		userDao.say();
	}

	@Override
	public String toString() {
		return "UserServiceImpl [userDao=" + userDao + ", username=" + username
				+ ", age=" + age + ", lists=" + lists + "]";
	}

	


}

4. 在spring中配置Bean

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
        <bean id = "userDao" class="com.wx.dao.impl.UserDaoImpl"></bean>
        
        <bean id="userService2" class="com.wx.service.impl.UserServiceImpl2">
        	<constructor-arg index="0" ref="userDao"/>
        	<constructor-arg index = "1" value="wx2"/>
        	<constructor-arg index = "2" value="202"/>
        	<constructor-arg index = "3">
        		<list>
        			<value>跑步2</value>
        			<value>足球2</value>
        			<value>游泳2</value>
        		</list>
        	</constructor-arg>
        </bean>
</beans>

5. 测试

package com.wx.mytest;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.wx.service.UserService;

public class MyTest1 {
	public static void main(String[] args){
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		UserService userService2 = (UserService)applicationContext.getBean("userService2");
		System.out.println(userService2);
	}
}

6 .结果

三、注解注入

1.导入Spring 框架中所需要的 jar包 (5个spring 框架包,1个依赖包)。在导入jar时,本来只需要导入4个spring框架的jar包,但是如果spring框架采用的是4.0以上,在使用注解配置的时候就需要导入spring-aop-4.3.6.RELEASE.jar

        下载spring框架入门包

        下载第三方依赖包  

                                                  

2. 配置 Spring 的约束信息  

<?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">
        
        
</beans>

3. 书写代码

package com.wx.dao;

public interface UserDao {
	public void say();
}
package com.wx.dao.impl;

import org.springframework.stereotype.Repository;

import com.wx.dao.UserDao;

@Repository("userDao")
public class UserDaoImpl implements UserDao {

	@Override
	public void say() {
		// TODO Auto-generated method stub
		System.out.println("UserDao Method!");
	}

}
package com.wx.service;

public interface UserService {
	public void say();
}
package com.wx.service.impl;



import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.wx.dao.UserDao;
import com.wx.service.UserService;

@Service("userService")
public class UserServiceImpl implements UserService {

	@Resource(name="userDao")
	private UserDao userDao;
	
	@Override
	public void say() {
		// TODO Auto-generated method stub
		userDao.say();
		System.out.println("UserService Method!");
	}

}
package com.wx.controller;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;

import com.wx.service.UserService;

@Controller("userController")
public class UserController {
	
	@Resource(name="userService")
	private UserService userService;
	
	public void say(){
		userService.say();
		System.out.println("UserController Method");
	}
}

4.在spring配置文件中增加注解扫描

<?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.wx" />
        
</beans>

5. 创建测试类

package com.wx.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.wx.controller.UserController;

public class MyTest {
	public static void main(String[] args){
		ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
		UserController userController = (UserController)application.getBean("userController");
		userController.say();
	}
}

6. 测试结果

          

四、自动装配

1.导入Spring 框架中所需要的 jar包 (4个spring 框架包,1个依赖包)

        具体查看:https://blog.csdn.net/Altitude_/article/details/100183138

2. 配置 Spring 的约束信息

       具体查看:https://blog.csdn.net/Altitude_/article/details/100183138

3.  书写代码

package com.wx.dao;

public interface UserDao {
	public void say();
}
package com.wx.dao.impl;

import com.wx.dao.UserDao;

public class UserDaoImpl implements UserDao {

	@Override
	public void say() {
		// TODO Auto-generated method stub
		System.out.println("UserDao Method");
	}

}
package com.wx.service;

public interface UserService {
	public void say();
}
package com.wx.service.impl;

import com.wx.dao.UserDao;
import com.wx.service.UserService;

public class UserServiceImpl implements UserService {

	private UserDao userDao;
	
	public UserServiceImpl(){}
	
	public UserServiceImpl(UserDao userDao){
		this.userDao = userDao;
	}
	
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}



	@Override
	public void say() {
		// TODO Auto-generated method stub
		userDao.say();
		System.out.println("UserService Method");
	}

}

4. 配置spring中的配置文件,其中autowired = “byName”,使用set方式注入,需要在需要注入的类中增加set方法。在autowired=“byType”,使用默认构造方法注入,需要在被注入的类中添加无参构造方法【如果被注入类中已经有其他有参构造方法,就需要添加】。在使用autowired=“constructor”中,需要在被注入的方法中设置有参构造方法,参数是注入对象。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
        
        <bean id="userDao" class="com.wx.dao.impl.UserDaoImpl"></bean>
        
        <bean id="UserService" class="com.wx.service.impl.UserServiceImpl" autowire="constructor"></bean>
        
        <!-- <bean id="UserService" class="com.wx.service.impl.UserServiceImpl" autowire="byName"></bean> -->
        
        <!-- <bean id="UserService" class="com.wx.service.impl.UserServiceImpl" autowire="byType"></bean> -->
        
</beans>

5. 创建测试类

package com.wx.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.wx.service.UserService;

public class MyTest {
	public static void main(String[] args){
		ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
		UserService userService = (UserService)application.getBean("UserService");
		userService.say();	
	}
}

6. 结果:

              


版权声明:本文为Altitude_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。