SringBoot-it楠老师
SringBoot
spring注入bean有几种方式
(1)标签注入文件,这是之前spring的方式
(2)扫包:使用注解注入 @Component, @Configuration @Bean @Service @Controller @Repository @Import
例子:
实体类User
package com.zhou.entity;
import org.springframework.stereotype.Component;
// 把user对象注入到容器中
// 方式1:使用component
@Component
public class User {
// 赋给值,方便测试getName
private String name = "www.itnanls.cn";
// private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
控制层,UserHandler
package com.zhou.controller;
import com.zhou.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
//@Controller// 不返回视图的话,使用RestController
@RestController
public class UserHandler {
// 如果User类注入到容器中了,则在controller引入也可以使用User
@Autowired
private User user;
@GetMapping("/hello")
public String hello(){
return user.getName();
}
}
启动类
package com.zhou;
import com.zhou.entity.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class SpringbootDemo01Application {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemo01Application.class, args);
}
}
这个方式是使用@Component和@Autowired来注入
方式2:
package com.zhou.entity;
import org.springframework.stereotype.Component;
// 把user对象注入到容器中
// 方式1:使用component
//@Component
// 方式2:不使用@Componet,而是使用在启动类加个返回User的方法和@Bean
public class User {
// 赋给值,方便测试getName
private String name = "www.itnanls.cn";
// private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.zhou.controller;
import com.zhou.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
//@Controller// 不返回视图的话,使用RestController
@RestController
public class UserHandler {
// 如果User类注入到容器中了,则在controller引入也可以使用User
@Autowired
private User user;
@GetMapping("/hello")
public String hello(){
return user.getName();
}
}
启动类
package com.zhou;
import com.zhou.entity.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class SpringbootDemo01Application {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemo01Application.class, args);
}
// 方式2:使用@Bean来注入,这里加了这个注入,那么User类中就可以不使用@Componet
@Bean
public User user(){
return new User();
}
}
测试成功
方式3:引入import
package com.zhou;
import com.zhou.entity.User