中国站长站官网,南宁关键词优化服务,腾讯云 wordpress教程,软件开发需求分析常用的工具目录 存储Bean对象Controller(控制器存储)Service(服务存储)Repository(仓库存储)Component(组件存储)Configuration(配置存储)Bean重命名Bean 获取Bean对象属性注入构造方法注入Setter注入Resource(注入关键字) 存储Bean对象
将对象存储在 Spring 中#xff0c;有两种注解类… 目录 存储Bean对象Controller(控制器存储)Service(服务存储)Repository(仓库存储)Component(组件存储)Configuration(配置存储)Bean重命名Bean 获取Bean对象属性注入构造方法注入Setter注入Resource(注入关键字) 存储Bean对象
将对象存储在 Spring 中有两种注解类型可以实现
类注解Controller、Service、Repository、Component、Configuration方法注解Bean
Controller(控制器存储)
如下使用Controller存储Bean代码
Controllerpublic class UserController {public void SayHi(String name){System.out.println(你好name);}
}使用获取上下文的方法获取上面存储的对象
public class Test {public static void main(String[] args) {//获取spring上下文ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring-config.xml);//获取指定的Bean对象名称类型进行获取UserController userController (UserController) applicationContext.getBean(userController);userController.SayHi(zcx);}
}
效果为
Service(服务存储)
如下使用Service存储Bean代码
Service
public class UserService {public void SayHi(String name){System.out.println(你好name);}
}
输出结果跟Controller一样
Repository(仓库存储)
如下使用Repository存储Bean代码
Repository
public class UserRepository {public void SayHi(String name){System.out.println(你好name);}
}Component(组件存储)
如下使用Component存储Bean代码
Component
public class UserComponent {public void SayHi(String name){System.out.println(你好name);}
}Configuration(配置存储)
如下使用Configuration存储Bean代码
Configuration
public class UserConfiguration {public void SayHi(String name){System.out.println(你好name);}
}需要这么多类注解是让程序员看到类注解之后就能直接了解当前类 的⽤途比如
Controller表示的是业务逻辑层Servie表示的是服务层Repository表示的是持久层Configuration表示的是配置层
Bean
⽅法注解是放到某个⽅法上的要配合类注解使⽤如以下代码的实现
Controller
public class Users {Beanpublic User user1(){User user new User();return user;}
}
public class Test {public static void main(String[] args) {//获取spring上下文ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring-config.xml);//获取指定的Bean对象名称类型进行获取User user (User) applicationContext.getBean(user1);user.sayHi(zcx);}
}
user类
Component
public class User {public void sayHi(String name){System.out.println(name你好);}}结果
重命名Bean
可通过设置 name 属性给 Bean 对象进⾏重命名操作
Bean(name {u1, us1})
public User user1() {
User user new User();
return user;
}或者
Bean(name {u1, us1})
public User user1() {
User user new User();
return user;
}获取Bean对象
获取Bean对象就是把对象取出来放入某个类中也叫对象注入或者对象装配。 对象注入有三种实现方法
属性注⼊构造⽅法注⼊Setter 注⼊
下⾯我们按照实际开发中的模式将 Service 类注⼊到 Controller 类中
属性注入
属性注⼊是使⽤ Autowired 实现的实现代码如下
Service
public class UserService {public User user1(){User user new User();return user;}
}
Controller
public class UserController {Autowiredprivate UserService userService;public User getUser(){return userService.user1();}
}
public class Test {public static void main(String[] args) {//获取spring上下文ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring-config.xml);//获取指定的Bean对象名称类型进行获取UserController userController applicationContext.getBean(UserController.class);userController.getUser().sayHi(zcx);}
}构造方法注入
构造⽅法注⼊是在类的构造⽅法中实现注⼊实现代码如下
Controller
public class UserController {private UserService userService;Autowiredpublic UserController(UserService userService) {this.userService userService;}public User getUser(){return userService.user1();}
}
其余代码写法跟属性注入一样
Setter注入
在设置 set ⽅法的时候需要加上 Autowired 注解
Controller
public class UserController {private UserService userService;Autowiredpublic void SetUserController(UserService userService) {this.userService userService;}public User getUser(){return userService.user1();}
}
Resource(注入关键字)
Controller
public class UserController {Resourceprivate UserService userService;public User getUser(){return userService.user1();}
}
使用Resource 可以解决同⼀类型多个 Bean 报错问题 可以如下设置方法名
Resource(name user1)Autowired 和 Resource 的区别
出身不同Autowired 来⾃于 Spring⽽ Resource 来⾃于 JDK 的注解使⽤时设置的参数不同相⽐于 Autowired 来说Resource ⽀持更多的参数设置例如name 设置根据名称获取 BeanAutowired 可⽤于 Setter 注⼊、构造函数注⼊和属性注⼊⽽ Resource 只能⽤于 Setter 注⼊和属性注⼊不能⽤于构造函数注⼊