1、setter方法注入
package edu.xalead;
import lombok.Setter;
/*实例化加@component,@repository(Dao层),@controller(web层),@service注解来创建实例bean放到Spring的工厂里。*/
@Setter
public class UserDao {
private String url;
private String driverClass;
private String username;
private String password;
public User findUser(){
User u = new User(1000,"张三",22,"男");
return u;
}
}
配置文件:
<?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:util="http://www.springframework.org/schema/util"
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/util https://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<bean id="userServlet" class="edu.xalead.UserServlet" scope="prototype">
<!--scope默认是单例模式-->
<property name="userService" ref="service"/>
</bean>
<bean id="service" class="edu.xalead.UserService">
<property name="userDao" ref="userDao">
</bean>
<bean class="edu.xalead.UserDao" id="userDao">
<property name="driverClass" value="com.mysql.jdbc.Driver"/">>
<propery name="url" value="jdbc:mysql://localhost:3306/cms">
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<bean class="edu.xalead.User" id="user"/>
</beans>
2、引用注入
<bean id="service" class="edu.xalead.UserService">
<property name="userDao" ref="userDao">
</bean>
3、构造注入
<bean class="edu.xalead.UserDao" id="userDao">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/cms"/>
<property name="password" value="root"/>
<property name="username" value="root"/>
</bean>
4、自动注入
<1>根据类型注入
<bean id="service" class="edu.xalead.UserService" autowire="byType">
在类中找到Setter()方法 的时候,就在工厂里找是否有与需要注入的对象相同类型的对象。一旦找到了就注入。
<2>根据名字注入
配置文件:
<bean class="edu.xalead.UserDao" id="userDao">
UserService类:
package edu.xalead;
import lombok.*;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service("ser")
@Data
public class UserService {
private UserDao userDao=null;
@Resource
public void setUserDao(UserDao userDao){
this.userDao = userDao;
}
public User findUser(){
return userDao.findUser();
}
}
UserService类中的对象userDao必须与配置文件中的UserDao的id名字相同。
<3>构造注入
<4>默认注入
List属性注入:
package edu.xalead;
import lombok.*;
import org.springframework.stereotype.Component;
import java.util.List;
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Data
@Component("user")
public class User {
private int id;
private String name;
private int age;
private String sex;
//List
private List<String> photos;
}
配置文件:
<property name="photos">
<list>
<value> 1.jpg</value>
<value> 2.jpg</value>
<value> 3.jpg</value>
<value> 4.jpg</value>
</list>
</property>
package edu.xalead;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test1 {
public static void main(String[] args) {
//创建工厂
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
User u = factory.getBean(User.class);
System.out.println(u);
}
}
package edu.xalead;
import lombok.Data;
/*实例化加@component,@repository(Dao层),@controller(web层),@service注解来创建实例bean放到Spring的工厂里。*/
@Data
public class UserDao {
private String url;
private String driverClass;
private String username;
private String password;
public User findUser(){
User u = new User(1000,"张三",22,"男",null);
return u;
}
}