一、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
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. 结果: