装配bean的三种方式
第一种:XML装配
xml装配有两种方式:
第一种:利用有参构造方法注入
User类:
package com.liu.xml;
import java.util.List;
//xml装配bean的两种方式
public class User {
private String username;
private Integer password;
private List<String> list;
//第一种:利用有差构造方法装配bean
public User(String username, Integer password, List<String> list) {
super();
this.username = username;
this.password = password;
this.list = list;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", list=" + list + "]";
}
}
ApplicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!-- 有参构造方法注入装配user -->
<bean id = "user2" class = "com.liu.xml.User">
<constructor-arg index = "0" value = "lisi"></constructor-arg>
<constructor-arg index = "1" value = "123456"></constructor-arg>
<constructor-arg>
<!-- 注入list -->
<list>
<value>listvalue1</value>
<value>listvalue1</value>
<value>listvalue1</value>
</list>
</constructor-arg>
</bean>
</beans>
测试类:
package com.liu.xml;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class XmlBeanTest {
public static void main(String[] args) {
//获取配置文件路径
String xmlpath ="com/liu/xml/ApplicationContext.xml";
//加载配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlpath);
//输出有参构造方法注入的结果
User user2 = (User) applicationContext.getBean("user2");
System.out.println(user2);
}
}
第二种:利用无参构造方法和setter方法注入
User类:
package com.liu.xml;
import java.util.List;
//xml装配bean的两种方式
public class User {
private String username;
private Integer password;
private List<String> list;
//第二种:无参构造方法和setter方法注入
public User() {
super();
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(Integer password) {
this.password = password;
}
public void setList(List<String> list) {
this.list = list;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", list=" + list + "]";
}
}
ApplicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!-- 无参构造方法和setter装配user -->
<bean id = "user1" class = "com.liu.xml.User">
<property name="username" value = "zhangsan"></property>
<property name="password" value = "123456"></property>
<property name="list" >
<!-- 注入list -->
<list>
<value>listvalue1</value>
<value>listvalue2</value>
<value>listvalue3</value>
</list>
</property>
</bean>
</beans>
测试类:
package com.liu.xml;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class XmlBeanTest {
public static void main(String[] args) {
//获取配置文件路径
String xmlpath ="com/liu/xml/ApplicationContext.xml";
//加载配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlpath);
//输出无参构造方法注入的结果
User user1 = (User) applicationContext.getBean("user1");
System.out.println(user1);
}
}
两种方式的输出结果:
User [username=zhangsan, password=123456, list=[listvalue1, listvalue2, listvalue3]]
User [username=lisi, password=123456, list=[listvalue1, listvalue1, listvalue1]]
第二种:注解装配
UserDao.java
package annotation;
public interface UserDao {
public void save();
}
UserDaoImpl.java
package annotation;
import org.springframework.stereotype.Repository;
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Override
public void save() {
// TODO Auto-generated method stub
System.out.println("UserDao------save");
}
}
UserService.java
package annotation;
public interface UserService {
public void save();
}
UserServiceImpl.java
package annotation;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service("userService")
public class UserServiceImpl implements UserService {
//@Resource(name = "userDao") 两种注解都可以 Resource是根据名称注解 Autowired是自动注解
@Autowired
private UserDao userDao;
@Override
public void save() {
// TODO Auto-generated method stub
this.userDao.save();
System.out.println("UserSerevice-------save");
}
}
UserController.java:
package annotation;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@Controller("controller")
public class UserController {
//@Resource(name = "userService")两种注解都可以 Resource是根据名称注解 Autowired是自动注解
@Autowired
private UserService userService;
public void save() {
this.userService.save();
System.out.println("UserController------save");
}
}
ApplicationContext.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!--第一种方式 -->
<!-- 使用context命名空间,在配置文件中开启对应的注解解析器 -->
<!-- 使用context命名空间的步骤1:添加xmlns:context="http://www.springframework.org/schema/context"
2:添加 http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
-->
<context:annotation-config></context:annotation-config>
<!-- 定义三个bean实例 -->
<bean id = "userDao" class = "annotation.UserDaoImpl"></bean>
<bean id = "userService" class = "annotation.UserServiceImpl"></bean>
<bean id = "userController" class = "annotation.UserController"> </bean>
<!-- 第二种方式 使用context命名空间。通知string扫描包自动对注解解析-->
<!-- <context:component-scan base-package="annotation"></context:component-scan> -->
</beans>
ControllerTest.java测试类:
package annotation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ControllerTest {
//使用注解进行装配
public static void main(String[] args) {
String xmlpath = "annotation/ApplicationContext.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlpath);
//获取UserController的实例
UserController userController = (UserController) applicationContext.getBean("userController");
//输出UserController中的save方法
userController.save();
}
}
输出结果:
UserDao------save
UserSerevice-------save
UserController------save
第三种:自动装配
UserDao.java:
package zidongzhuangpei;
public interface UserDao {
public void save();
}
UserDaoImpl.java:
package zidongzhuangpei;
import org.springframework.stereotype.Repository;
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Override
public void save() {
// TODO Auto-generated method stub
System.out.println("UserDao------save");
}
}
UserService.java:
package zidongzhuangpei;
public interface UserService {
public void save();
}
UserServiceImpl.java:
package zidongzhuangpei;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service("userService")
public class UserServiceImpl implements UserService {
//@Resource(name = "userDao")
@Autowired
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save() {
// TODO Auto-generated method stub
this.userDao.save();
System.out.println("UserSerevice-------save");
}
}
UserController.java:
package zidongzhuangpei;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@Controller("controller")
public class UserController {
//@Resource(name = "userService")
@Autowired
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
public void save() {
this.userService.save();
System.out.println("UserController------save");
}
}
ApplicationContext.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- 使用context命名空间,在配置文件中开启对应的注解解析器 -->
<!-- 使用context命名空间的步骤1:添加xmlns:context="http://www.springframework.org/schema/context"
2:添加 http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
-->
<context:annotation-config></context:annotation-config>
<!-- 定义三个bean实例 -->
<bean id = "userDao" class = "zidongzhuangpei.UserDaoImpl"></bean>
<bean id = "userService" class = "zidongzhuangpei.UserServiceImpl" autowire="byName"></bean>
<bean id = "userController" class = "zidongzhuangpei.UserController" autowire="byName"> </bean>
</beans>
ControllerTest.java测试类:
package zidongzhuangpei;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ControllerTest {
//使用注解进行装配
public static void main(String[] args) {
String xmlpath = "zidongzhuangpei/ApplicationContext.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlpath);
//获取UserController的实例
UserController userController = (UserController) applicationContext.getBean("userController");
//输出UserController中的save方法
userController.save();
}
}
运行结果:
UserDao------save
UserSerevice-------save
UserController------save
还没有评论,来说两句吧...