作为面试者,我非常愿意分享与Spring容器相关的技术和案例。
Spring容器是一个轻量级的IoC(Inversion of Control)容器,它主要有以下几个功能:
<bean id="simpleBean" class="com.example.SimpleBean">
<property name="dependency" ref="otherBean"/>
</bean>@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
// 打印日志
}
}@Service
public class EmailService {
@Autowired
private JavaMailSender mailSender;
public void sendEmail(String recipient, String subject, String body) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(recipient);
message.setSubject(subject);
message.setText(body);
mailSender.send(message);
}
}<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="com.example.model"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>@Controller
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@PostMapping
public ModelAndView addUser(UserDto userDto) {
User user = userDto.toUser();
userService.addUser(user);
return new ModelAndView("userDetails", "user", user);
}
}@RunWith(SpringRunner.class)
@WebMvcTest(UserController.class)
public class UserControllerTests {
@Autowired
private MockMvc mockMvc;
@Test
public void addUser_shouldReturnUserDetails() throws Exception {
this.mockMvc.perform(post("/users")
.param("name", "Test User")
.param("email", "test@example.com"))
.andExpect(status().isOk())
.andExpect(view().name("userDetails"));
}
}以上是几个Spring容器的主要功能以及在实际应用中的示例。通过合理利用Spring容器的功能,我们可以更快地构建出高效、可扩展、