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注解标注在属性上就可以实现自动装配了

最新文章

  1. python selenium
  2. MySQL索引结构--由 B-/B+树看
  3. Atitti 文本分类 &#160;以及 垃圾邮件 判断原理 以及贝叶斯算法的应用解决方案
  4. 去除手机端触摸滑动事件ontouchmove
  5. 404 &amp; 401 Errors with the App Management Service
  6. JAVA-封装
  7. mysql中文字段转拼音首字母,以及中文拼音模糊查询
  8. CUBRID学习笔记 18 sql语句的预处理(类似存储过程)
  9. 第三百三十五天 how can I 坚持
  10. 谷歌下设置滚动条的css样式
  11. 总结iframe高度自适应,自适应子页面高度
  12. Postman interceptor
  13. 表格td标签在不添加多余标签的情况下实现文本内容单行显示,多余部分省略号表示的方法
  14. javascript IE与其他主流浏览器兼容性问题积累
  15. react-native学习路线总结
  16. [HAOI2006]旅行
  17. ArcGIS API For Javascript_4.8-Symbol__SimpleLineSymbol
  18. Dockerfile Volume指令与docker -v的区别
  19. [Ynoi2018]末日时在做什么?有没有空?可以来拯救吗?
  20. hdu 2063 给男女匹配 (匈牙利算法)

热门文章

  1. 普通人如何站在时代风口学好AI?这是我看过最好的答案
  2. robotframework执行UI自动化时不能运行谷歌浏览器的问题
  3. Java线程池初步解读
  4. import tensorflow 出现非法指令(核心已转储)
  5. 云计算之路-出海记-小目标:Hello World from .NET 5.0 on AWS
  6. python爬虫03 Urllib库
  7. String字符串加号的作用与基本数据类型加号的作用的区别
  8. CSS3:overflow属性详解
  9. c++的基本点
  10. python之路 《四》 字典