大家好,又见面了,我是你们的朋友全栈君。
最近几天学习了一些关于spring的东西,以前对spring的认识最大的就是控制反转和依赖注入,原理也不是很清楚。今天就谈谈控制反转和依赖注入新的认识。
控制反转就是把创建对象的过程交给spring去管理。最初我们采用new来创建一个新的对象,加入了spring之后,就可以通过spring来创建,主要有两种方式,一种是通过配置文件,另一种是通过注解。
如果是通过配置文件来创建对象的代码为:
<bean id="userService" class="cn.tgb.UserService"/〉
class指的是需要实例化的类,这里是类的完整路径。
创建一个UserService类的对象:
public void testUser(){
//1.加载spring配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
//2.得到创建的对象
UserService user = context.getBean("userService");
}
通过注解创建对象就是在要实例的类上面加上注解。
@Component(value="user")
public class UserService{
public void add(){
system.out.println("add-method");
}
}
创建对象的注解有四个,分别为:Component,Controller,Service,Repository。
属性注入就是创建对象的时候,向类中的属性赋值。在spring中,我们可以通过set方法或有参的构造函数注入。比如说我们通过有参数的构造函数注入:
向UserService类中的username属性注入值为“张三”:
<!--使用有参数的构造注入属性-->
<bean id="userService" class="cn.tgb.UserService"〉
<!--使用有参构造注入,name:属性名称,value:具体的属性值-->
<constructor-arg name="username" value="张三"/>
<bean/>
UserService类:
public class UserService{
private String username;
public UserService(String username){
this.username = username;
}
public void add(){
System.out.println("add user:" + username);
}
}
使用set方法注入:
public class UserService{
private String username;
public setUserName(String username){
this.username = username;
}
public void add(){
System.out.println("add user:" + username);
}
}
配置文件:
<!--使用set方法注入属性-->
<bean id="userService" class="cn.tgb.UserService"〉
<!--注入属性值,name:属性名称,value:具体的属性值-->
<property name="username" value="张三"><property/>
<bean/>
属性的注入跟创建对象一样,既可以通过配置文件设置,也可以用注解的方式。注入属性的两个关键字为:Autowired和Resource。把注解加到对应的属性上面就可以。
感觉spring刚刚入了一点门,接下来再深入学习。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105652.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...