還不懂spring中的bean的話,你一定得好好看看這篇文章
阿新 • • 發佈:2020-10-26
bean的作用域
bean的生命週期
bean的裝配
程式碼
實體類
package com; import java.util.List; public class User { private String username; private String password; private List<String> list; /** * 設值注入要求bean類: * 1、必須提供預設無參構造方法 * 2、為屬性提供setter方法 */ public User() { } public User(String username, String password, List<String> list) { this.username = username; this.password = password; this.list = list; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public List<String> getList() { return list; } public void setList(List<String> list) { this.list = list; } @Override public String toString() { return "User{" + "username='" + username + '\'' + ", password='" + password + '\'' + ", list=" + list + '}'; } }
dao層
package com;
import org.springframework.stereotype.Repository;
@Repository("userDao1")
public class UserDaoImpl implements UserDao{
public void say() {
System.out.println("dao");
}
}
service層
package com; import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service("userService") public class UserServiceImpl implements UserService{ @Resource(name="userDao1") // @Autowired private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } @Override public void save() { this.userDao.say(); System.out.println("service"); } }
controller層
package com; import org.springframework.stereotype.Controller; import javax.annotation.Resource; @Controller("userController") public class MyController { @Resource(name="userService") // @Autowired UserService userService; public void setUserService(UserService userService) { this.userService = userService; } public void say(){ this.userService.save(); System.out.println("controller"); } }
基於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"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
<bean id="userDao" class="com.UserDaoImpl"/>
<!-- 使用構造注入方式裝配bean -->
<bean id="user1" class="com.User">
<constructor-arg index="0" value="zhangsan" />
<constructor-arg index="1" value="123" />
<constructor-arg index="2">
<list>
<value>construct1</value>
<value>construct2</value>
</list>
</constructor-arg>
</bean>
<!-- 使用設值注入方式裝配bean -->
<bean id="user2" class="com.User">
<property name="username" value="lisi" />
<property name="password" value="123" />
<property name="list">
<list>
<value>set1</value>
<value>set2</value>
</list>
</property>
</bean>
</beans>
基於Annotation裝配
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
<bean id="userDao1" class="com.UserDaoImpl" />
<bean id="userService" class="com.UserServiceImpl" />
<bean id="userController" class="com.MyController" />
<!-- 開啟註解 -->
<context:annotation-config />
</beans>
自動裝配
<!-- 掃描包-->
<context:component-scan base-package="com"/>
小結
然後用@Autowired註解標註在屬性上就可以實現自動裝配了