首页 技术 正文
技术 2022年11月15日
0 收藏 461 点赞 3,421 浏览 6912 个字

(一)

知识点:Spring容器支持多种形式的Bean的装配方式,比如基于XML的装配,基于注解的装配和自动装配(最常用的就是基于注解的装配)

Spring提供了两种基于xml的装配方式:设值注入(Setter Injection)和构造器注入(Construtor Injection)

Bean的装配方式

1.InstanceTest.java

package com.inspur.assembling;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.inspur.static_factory.Bean2;public class InstanceTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String xmlPath = "com/inspur/assembling/bean1.xml";
//2.ApplicationContext 在加载文件时,对bean实例化
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath); System.out.println(applicationContext.getBean("user1"));
System.out.println(applicationContext.getBean("user2")); }}

2.User.java

package com.inspur.assembling;import java.util.List;public class User {    //1.设值注入
//无参构造器
public User(){
}
private String username;
private Integer password;
private List<String> list;
//设置setter方法
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;
} //2.构造器注入
//有参数构造器
public User(String username, Integer password, List<String> list) {
super();
this.username = username;
this.password = password;
this.list = list;
}
public String toString(){
return "[User:username="+username+",password:"+password+",list:"+list+"]";
}}

3.bean1.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.xsd"> <!-- 设值注入 -->
<bean id="user1" class="com.inspur.assembling.User">
<property name="username" value="zhangsan"></property>
<property name="password" value="123"></property>
<property name="list">
<list>
<value>设值注入1</value>
<value>设值注入2</value>
<value>设值注入3</value>
</list>
</property>
</bean> <!-- 构造器注入 -->
<bean id="user2" class="com.inspur.assembling.User">
<constructor-arg index="0" value="lisi"></constructor-arg>
<constructor-arg index="1" value="456"></constructor-arg>
<constructor-arg index="2">
<list>
<value>构造器注入1</value>
<value>构造器注入2</value>
</list>
</constructor-arg>
</bean>
</beans>

(二)注解

Bean的装配方式

1.InstanceTest.java

package com.inspur.zhujie1;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class InstanceTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String xmlPath = "com/inspur/zhujie1/bean.xml";
//2.ApplicationContext 在加载文件时,对bean实例化
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
UserController userController = (UserController)applicationContext.getBean("UserController");
userController.save(); }}

2.UserController.java

package com.inspur.zhujie1;import javax.annotation.Resource;import org.springframework.stereotype.Controller;@Controller("UserController")
public class UserController {
@Resource(name="userService")
private UserService userService;
public void save(){
this.userService.save();
System.out.println("UserController..save");
}}

3.UserDao.java

package com.inspur.zhujie1;public interface UserDao {
public void save();}

3.UserDaoImpl.java

package com.inspur.zhujie1;import org.springframework.stereotype.Repository;@Repository("userDao")
public class UserDaoImpl implements UserDao{
public void save(){
System.out.println("UserDaoImpl.. save");
}}

4.UserService.java

package com.inspur.zhujie1;public interface UserService {
public void save();}

5.UserServiceImpl.java

package com.inspur.zhujie1;import javax.annotation.Resource;import org.springframework.stereotype.Service;@Service("userService")
public class UserServiceImpl implements UserService{
@Resource(name="userDao")
private UserDao userdao;
public void save(){
userdao.save();
System.out.println("UserService...save..");
}}

6.bean.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: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">
<!-- 使用Context命名空间,在配置文件中开启相应的注解处理器 -->
<context:annotation-config />
<!-- 使用Spring配合文件中的注解方式较大程度简化了Xml文件中的bean的配置,但仍然需要在spring文件中配置相应的bean -->
<!-- userDao -->
<!-- <bean id="userDao" class="com.inspur.annotation.UserDaoImpl"></bean>
<bean id="userService" class="com.inspur.annotation.UserServiceImpl"></bean>
<bean id="userController" class="com.inspur.annotation.UserController"></bean> -->
<!-- context空间下扫描组件 将指定包下的所有的Bean类,进行注解解析 -->
<context:component-scan base-package="com.inspur.zhujie1" />
</beans>

7.运行结果:

Bean的装配方式

(四)自动注解

Bean的装配方式

1.InstanceTest.java

package com.inspur.autozhujie;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class InstanceTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String xmlPath = "com/inspur/autozhujie/bean.xml";
//2.ApplicationContext 在加载文件时,对bean实例化
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
UserController userController = (UserController)applicationContext.getBean("userController");
userController.save(); }}

2.UserController.java

package com.inspur.autozhujie;public class UserController {    private UserService userService;
//为属性设置setter方法
public void setUserService(UserService userService){
this.userService=userService;
}
public void save(){
this.userService.save();
System.out.println("UserController..save");
}}

3.UserDao.java

package com.inspur.autozhujie;public interface UserDao {
public void save();
}

4.UserDaoImpl.java

package com.inspur.autozhujie;public class UserDaoImpl implements UserDao {    public void save(){
System.out.println("UserDaoImpl.. save");
}}

5.UserService.java

package com.inspur.autozhujie;public interface UserService {
public void save();
}

6.UserServiceImpl.java

package com.inspur.autozhujie;public class UserServiceImpl implements UserService {
private UserDao userDao;
//为属性提供setter方法
public void setUserDao(UserDao userDao){
this.userDao=userDao;
}
public void save(){
userDao.save();
System.out.println("UserService...save..");
}
}

7.bean.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: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">
<!-- 使用bean元素的autowise属性完成自动装配 -->
<bean id="userDao" class="com.inspur.autozhujie.UserDaoImpl"></bean>
<bean id="userController" class="com.inspur.autozhujie.UserController" autowire="byName"></bean>
<bean id="userService" class="com.inspur.autozhujie.UserServiceImpl" autowire="byName" ></bean>
</beans>
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,964
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,486
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,331
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,114
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,747
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,781